2014-11-02 15 views
9

Tôi muốn tạo ngày ngẫu nhiên cho truy vấn cập nhật SQL Server. Tôi tìm thấy rất nhiều ví dụ cho những ngày ngẫu nhiên hoặc một cái gì đó tương tự nhưng tôi không thể tìm thấy một cái gì đó mà tạo ra một ngày ngẫu nhiên với ngày ngẫu nhiên, giờ, phút, giây và mili giây.Máy chủ SQL: ngày ngẫu nhiên trong phạm vi cụ thể (bao gồm giờ ngẫu nhiên, phút, ...)

Đây là những gì tôi sử dụng để tạo ngày ngẫu nhiên nhưng nó luôn mang lại cho tôi 00 là giờ, phút, giây và mili giây và tôi không biết làm cách nào để có thể ngẫu nhiên chúng.

Đây là câu hỏi của tôi:

declare @FromDate date = GETDATE()-2 
declare @ToDate date = GETDATE()-1 

UPDATE ACCOUNTS 
SET dateFinished= 
dateadd(day, rand(checksum(newid())) * (1 + datediff(day, @FromDate, @ToDate)), @FromDate) 

Trả lời

8

Đây là cách tôi muốn làm điều đó:

  1. làm việc ra số giây giữa từ và đến
  2. Nhận một số ngẫu nhiên giữa zero và số giây
  3. Thêm số ngẫu nhiên đó vào FromDate
  4. Cuối cùng, ngẫu nhiên số mili giây s

DECLARE @FromDate DATETIME = DATEADD(DAY, -2, GETDATE()) 
DECLARE @ToDate DATETIME = DATEADD(DAY, -1, GETDATE()) 

DECLARE @Seconds INT = DATEDIFF(SECOND, @FromDate, @ToDate) 
DECLARE @Random INT = ROUND(((@Seconds-1) * RAND()), 0) 
DECLARE @Milliseconds INT = ROUND((999 * RAND()), 0) 

SELECT DATEADD(MILLISECOND, @Milliseconds, DATEADD(SECOND, @Random, @FromDate)) 
0
SELECT dateaddDATEADD(second, 
      second, (rand()*60+1), 
      DATEADD(minute, 
        (rand()*60+1) , 
        DATEADD(day, 
          (rand()*365+1), 
          DATEADD(year, 
            -1, 
            getdate())))) 
+0

Trên thực tế đưa ra một ngày ngẫu nhiên, nhưng không phải trong một phạm vi nhất định. Atm Tôi đang suy nghĩ về làm thế nào để thích ứng với điều này cho một phạm vi cụ thể. – kentor

+0

Tại sao lại là downvote ??? –

0
declare @FromDate dateTIME = '2014-01-01' 
declare @ToDate dateTIME = '2014-12-31' 

select top 100 dateadd(day,rand(checksum(newid()))*(1+datediff(day, @FromDate, @ToDate)), @FromDate) FROM Tabled(give your table name) 
+0

không tạo ngày giờ ngẫu nhiên – omerts

Các vấn đề liên quan