SQL Server:以15分钟为间隔填充表

Dav*_*258 3 sql-server datetime populate intervals

我需要在SQL Server中填充一ID列,并且TimeValue01/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中正在生成的其他表“同步”。

如果您能想到一种更好的方法,我将非常希望知道!

T I*_*T I 5

您可以使用数字表

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)


Mih*_*riu 5

让我们保持简单,因为总有另一个人在查看我们的代码;)

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)