微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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);

原文地址:https://www.jb51.cc/mssql/79131.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐