Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server SQL Server:特定范围内的随机日期(包括随机小时、分钟等)_Sql Server - Fatal编程技术网

Sql server SQL Server:特定范围内的随机日期(包括随机小时、分钟等)

Sql server SQL Server:特定范围内的随机日期(包括随机小时、分钟等),sql-server,Sql Server,我想为SQL Server更新查询创建一个随机日期。我找到了很多随机日期或类似的例子,但我找不到创建随机日期、小时、分钟、秒和毫秒的例子 这就是我用来随机创建日期的方法,但它总是给我00,如小时、分钟、秒和毫秒,我不知道如何将它们随机化 这是我的疑问: declare @FromDate date = GETDATE()-2 declare @ToDate date = GETDATE()-1 UPDATE ACCOUNTS SET dateFinished= dateadd(day, ran

我想为SQL Server更新查询创建一个随机日期。我找到了很多随机日期或类似的例子,但我找不到创建随机日期、小时、分钟、秒和毫秒的例子

这就是我用来随机创建日期的方法,但它总是给我00,如小时、分钟、秒和毫秒,我不知道如何将它们随机化

这是我的疑问:

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)
我会这样做:

  • 计算从到之间的秒数
  • 获取一个介于0和秒数之间的随机数
  • 将该随机数添加到FromDate
  • 最后随机分配毫秒数


  • 实际上给出了一个随机日期,但不在特定范围内。Atm我正在考虑如何适应特定的范围。不产生一个随机的时间只是日期
    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))
    
    SELECT dateaddDATEADD(second, 
              second,  (rand()*60+1), 
                DATEADD(minute,
                        (rand()*60+1) , 
                        DATEADD(day, 
                                (rand()*365+1), 
                                DATEADD(year, 
                                        -1, 
                                        getdate()))) )
    
    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)