Dav*_*258 3 sql-server datetime populate intervals
我需要在SQL Server中填充一ID
列,并且TimeValue
在01/01/2000
和之间以15分钟的间隔填充一列01/01/2020
。
似乎必须有一种简单的方法来做到这一点,但是我对T-SQL还是陌生的,因此找不到任何简单的方法来实现。
即
ID Timevalue
------------------------------
0 01/01/2000 00:00:00
1 01/01/2000 00:15:00
2 01/01/2000 00:30:00
... ...
701280 01/01/2020 00:00:00
Run Code Online (Sandbox Code Playgroud)
如果您有兴趣将此表用于带有时间戳和值的表的联接-联接的表可能/可能在一定间隔内没有空格,但是如果在01:00之间出现多个值,则不应进行任何分组/平均-01:15只能报告01:00和01:15的值。需要有固定数量的输出行,以便它与Excel中正在生成的其他表“同步”。
如果您能想到一种更好的方法,我将非常希望知道!
您可以使用数字表
WITH Numbers AS
(
SELECT TOP (10000) n = CONVERT(INT, ROW_NUMBER() OVER (ORDER BY s1.[object_id]))
FROM sys.all_objects AS s1 CROSS JOIN sys.all_objects AS s2
)
SELECT id = ROW_NUMBER() OVER (ORDER BY n), [timestamp] = DATEADD(MINUTE, n, '00:00:00')
FROM Numbers
WHERE n % 15 = 0
Run Code Online (Sandbox Code Playgroud)
让我们保持简单,因为总有另一个人在查看我们的代码;)
DECLARE @start DATETIME, @end DATETIME
SET @start = '20000101';
SET @end = '20000105'; --SET @end = '20200101';
WHILE @start < @end
BEGIN
INSERT INTO Table1
VALUES (@start)
SET @start = DATEADD(MINUTE, 15, @start)
END
Run Code Online (Sandbox Code Playgroud)