把 datetime 分成两段处理(date,time),并且分别对其采用随机函数处理,在加你以上的条件限制即可
(例如: select  convert(varchar(10), convert(datetime,rand()*10000),121)+' 17:53:02' )

解决方案 »

  1.   

    用上面方法计算日期值插入就OK了-----over
      

  2.   

    select  time12 = convert(varchar(10), convert(datetime,rand()*10000),121)+' 11:53:11'
      

  3.   

    非常感謝deodarsydn(deodar),我先試試看
    不管怎樣,我都會非常感謝deodarsydn(deodar) !!!!你讓我看到了希望。
    不過我現在的問題不象你說的那樣,你隻是讓我如何取出時間部分來,但我的根本用意你可能還沒有弄清,還望各位大俠幫我吧!!!!!
      

  4.   

    我的根本問題是:所有記錄中time11、time12、time21、time21、time22、time31、time32值不能超過三條重復值,可以通過將14分鐘(如time1介於7:53:00.000--8:07:00.000,相差14分鐘)分成一萬份(每間隔就是84ms),然後通過如下方法插入值:update [時間表名] set time11=dateadd(ms,TimeID*84,'7:53:00.000')......(其中因為TimeID是標志列,所以其值會自動從1到10000),這樣就相當於將各時間列值全部設成等差為84ms的等差數列,但是這樣卻不符合上司的要求,他要求各時間列值不能按一定規律增長,而是要非常胡亂,越亂越好,同時不能讓time11、time12...同時處在一個相同的等差值上,即如果time11=7:53:00.0168那麼time12就不能是time12=11:53:00.0168(其它列值一樣不能),總之要把它們的值胡亂的錯開。根本意思就是每列的值的排列要非常胡亂,不能有一定規律,同時各列之間的值要分別錯開(不能平行錯開,要混亂的錯開),不知有什麼算法或什麼方法做到呢?不知誰可以幫我解決這個難題呢?
      

  5.   

    time11=dateadd(ms,TimeID*84,'7:53:00.000') ----->time11=dateadd(ms,CONVERT(INT,(RAND()*10000))*84,'7:53:00.000')
    這樣行不行? 我認為是可以了,你提醒了我,看來我也需要做這樣的數據!
      

  6.   

    提醒各位大俠:一、函數rand(N)對於相同的N會產生相同的隨機數。二、如果N1>N2那麼rand(N1)>rand(N2)
    所以我要產生一萬條隨機的記錄(不能有任何規律,比如從小到大或從大到小的規律,同時同一條記錄上的time11,time12,time31...的值不能同時大或同時小,比如time11='7:55:12.221',那麼time12,timee21,time22...不能為'11:55:12.221','12:55:12.221'...它們的值要完全無規律的錯開),用rand(N)是不容易做到的。各位有什麼好方法盡量發表吧。
    等你們的好消息!!!!
      

  7.   

    提醒各位大俠:一、函數rand(N)對於相同的N會產生相同的隨機數。二、如果N1>N2那麼rand(N1)>rand(N2)
    所以我要產生一萬條隨機的記錄(不能有任何規律,比如從小到大或從大到小的規律,同時同一條記錄上的time11,time12,time31...的值不能同時大或同時小,比如time11='7:55:12.221',那麼time12,timee21,time22...不能為'11:55:12.221','12:55:12.221'...它們的值要完全無規律的錯開),用rand(N)是不容易做到的。各位有什麼好方法盡量發表吧。
    等你們的好消息!!!!