SQL Server:特定范围内的随机日期(包括随机小时,分钟......)

ken*_*tor 9 sql-server

我想为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)
Run Code Online (Sandbox Code Playgroud)

Dav*_*idG 8

我就是这样做的:

  1. 计算from和to之间的秒数
  2. 获取零到秒数之间的随机数
  3. 将该随机数添加到FromDate
  4. 最后随机化毫秒数

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))
Run Code Online (Sandbox Code Playgroud)