【发布时间】:2021-02-03 18:58:10
【问题描述】:
以下 SQL 使用getdate() 选择今天的日期并附加一个随机时间戳:
SELECT
DATEADD(SECOND ,RAND(CHECKSUM(NEWID())) * 86400,CONVERT(datetime,CONVERT(varchar(8),GETDATE(),112)))
AS DUEDATE
FROM [dbo].[Table] as t
生产
2021-02-03 21:11:21.000
2021-02-03 15:51:06.000
2021-02-03 14:08:24.000
2021-02-03 16:10:50.000
2021-02-03 02:56:00.000
此 SQL 使用 getdate() 获取今天的日期并从 t.daysago 中减去该值(例如 1、2、3、4、5 等)以生成过去的日期(例如,今天的日期 - 5天)
select
(Dateadd(day, -t.daysago, Getdate()))
FROM [dbo].[Table] as t
生成这些降序日期,但在每一行中具有相同的时间戳。
2021-02-02 12:38:09.133
2021-02-01 12:38:09.133
2021-01-30 12:38:09.133
2021-01-29 12:38:09.133
2021-01-28 12:38:09.133
我需要更改时间戳,以便我的演示仪表板中的数据看起来真实。
我正在尝试将这两种方法结合起来,但遇到了麻烦。我想用getdate() 生成今天的日期,然后从今天的日期中减去t.daysago 中的值,然后随机化时间戳。
如果今天的日期和当前时间是 2021-02-03 22:11:31.000,我想生成以下内容(通过减去 t.daysago (1,2,3,4,5) 中的值:
2021-02-02 22:11:31.000
2021-02-01 15:51:06.000
2021-01-30 14:08:24.000
2021-01-29 16:10:50.000
2021-01-28 02:56:00.000
我似乎无法弄清楚如何组合这些方法来获得所需的输出。有什么建议吗?
【问题讨论】:
-
向我们展示您尝试将它们结合起来的尝试。
-
它很丑但是:选择 DATEADD(SECOND ,RAND( CHECKSUM(NEWID())) * 86400, CONVERT(Datetime(day, -ts.daysago, Getdate()) ) AS DueDate FROM [ dbo].[TaskSummary] as ts
-
edit 它进入您的问题。并解释什么不起作用。
-
将尝试。它甚至还没有接近工作。
标签: sql sql-server tsql