日期:2014-05-17  浏览次数:20393 次

关于SQLserver2008中批量数据更新表中的某一字段的值,字段类型为datetime,想要只修改年月日,不修改时分秒
由于前期数据混乱,现在要修改上万条的数据,悲剧啊,现在表tab中有3个字段分别为time1,time2,time3,这三个字段都是datetime格式的,其中time2的年月日错了(time2要在time1和time3之间),我要只改其中的年月日不改时分秒,将time2的年月日改成比time1的年月日大5~7天,这个可以用随机函数select 5+abs(checksum(newid()))%(7-5+1)来获取(最烦的是每条记录的时间都是不同的)请各位大神赐教!!!

------解决方案--------------------
使用dateadd加天啊,参考
http://msdn.microsoft.com/zh-cn/library/ms186819.aspx
------解决方案--------------------
update tab set time2=dateadd(day,5+abs(checksum(newid()))%(7-5+1),time2);

貌似用字符串的话有点复杂。。
------解决方案--------------------
用字符串的话有点复杂?数据类型是字符串?convert加个参数转化。