sql-server – SQL Server 2008生成一系列日期时间

我正在尝试生成一个具有一系列日期时间的表.

我有指定的开始日期时间和结束日期时间(结束日期时间是序列结束),我添加一个时间间隔〜(这可以变化)到开始日期时间(以秒为单位),这给我结束日期时间.

一个序列使用结束日期时间作为其起始值,并将时间间隔(以秒为单位)添加到其中.为了演示我需要的输出.有没有一个快速方法来创建这样一个表,除了使用大量的插入到命令?,我真的很沮丧

StartTime               Endtime                 Duration
2011-07-20 11:00:33     2011-07-20 11:09:47     554
2011-07-20 11:09:47     2011-07-20 11:19:01     554

    declare @StartTime datetime = '2011-07-20 11:00:33',@EndTime datetime = '2011-07-20 15:37:34'
    @Interval int = 554 -- this can be changed.

    insert into tmp_IRange
    values('2011-07-20 11:00:33',DATEADD(SECONDS,@Duration,2011-07-20 11:00:33))

这变得非常繁琐..特别是当结束日期时间是2011-07-20 15:37:34
有很多insert语句使:(

解决方法

使用递归CTE
declare @StartTime datetime = '2011-07-20 11:00:33',@EndTime datetime = '2011-07-20 15:37:34',@Interval int = 554 -- this can be changed.

;WITH cSequence AS
(
    SELECT
       @StartTime AS StartRange,DATEADD(SECOND,@Interval,@StartTime) AS EndRange
    UNION ALL
    SELECT
      EndRange,EndRange)
    FROM cSequence 
    WHERE DATEADD(SECOND,EndRange) < @EndTime
)
 /* insert into tmp_IRange */
SELECT * FROM cSequence OPTION (MAXRECURSION 0);

相关文章

SELECT a.*,b.dp_name,c.pa_name,fm_name=(CASE WHEN a.fm_n...
if not exists(select name from syscolumns where name=&am...
select a.*,pano=a.pa_no,b.pa_name,f.dp_name,e.fw_state_n...
要在 SQL Server 2019 中设置定时自动重启,可以使用 Window...
您收到的错误消息表明数据库 &#39;EastRiver&#39; 的...
首先我需要查询出需要使用SQL Server Profiler跟踪的数据库标...