DECLARE @date_from DATETime;--声明开始日期变量
DECLARE @date_to DATETime;--声明结束日期变量
SET @date_from = '2012-06-01 19:20:36.000';--为开始日期赋值
SET @date_to = '2012-07-25 15:30:36.000';--为结束日期赋值
update [Web_OrderProduct] set [CreateDate]=
     
 (
     @date_from +   -----开始时间 加上一个以天为整的数值作为新的日期
     (   
     ABS(
     CAST(
     CAST( NewID() AS Binary(17) )--把生成的一个二进制随机数转化为整数 并取其绝对值
     AS int
     )
     )
     %                                     ----防止随机数过大   取其对开始结束时间差的模
     CAST(
     (@date_to - @date_from)     -----获取时间差   并转换成整型
     AS int
     )
     )
     )
where OrderNumber in 
  (SELECT  Number FROM Web_Order where UserRe like '%豫基123466一九九三%')
用这种方法更新的随机时间后面的时分秒都是同一个时间,求哪位大侠帮我看看

解决方案 »

  1.   

    日期转数字没有时分秒,你的表达式中,时分秒都是@date_from的。
      

  2.   

    declare @b1 datetime
    declare @b2 datetime
    declare @days int 
    set @b1='2011-1-1'
    set @b2='2013-3-1'
    set @days=DATEDIFF(DAY,@b1,@b2)SELECT 
     
    CONVERT(VARCHAR(20) ,DATEADD(DAY, abs(checksum(newid()))%@days, @b1),23)
    +' '+CONVERT ( VARCHAR(2),abs(checksum(newid()))%24)+
    +':'+CONVERT ( VARCHAR(2),abs(checksum(newid()))%60)+
    +':'+CONVERT ( VARCHAR(2),abs(checksum(newid()))%60)
     FROM UserInfo
    结果