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

前端之家收集整理的这篇文章主要介绍了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);

猜你在找的MsSQL相关文章