Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
T-SQL从两个日期生成时间间隔_Sql_Tsql - Fatal编程技术网

T-SQL从两个日期生成时间间隔

T-SQL从两个日期生成时间间隔,sql,tsql,Sql,Tsql,我希望生成这样的间隔: - ID | START_INTERVAL - 1 | 12:00 - 2 | 12:30 - 3 | 13:00 - 4 | 13:30 - 5 | 16:00 - 6 | 16:30 - 7 | 17:00 - 8 | 17:30 由此: - ID | START | STOP | INTERVAL - 1 | 2018-05-03 12:00:00 | 2018-05-03 14:00:00 | 30 - 2 | 2018-05-03 16:

我希望生成这样的间隔:

 - ID | START_INTERVAL
 - 1 | 12:00
 - 2 | 12:30
 - 3 | 13:00
 - 4 | 13:30
 - 5 | 16:00
 - 6 | 16:30
 - 7 | 17:00
 - 8 | 17:30
由此:

- ID | START | STOP | INTERVAL
 - 1 | 2018-05-03 12:00:00 | 2018-05-03 14:00:00 | 30
 - 2 | 2018-05-03 16:00:00 | 2018-05-03 18:00:00 | 30
可以从t-sql生成,或者我需要使用PHP?

所以,您需要某种递归cte


您从哪里获得2018-05-03?如果它会传到第二天呢?除了30之外,还有其他时间间隔吗?可能重复为什么需要在T-SQL中执行此操作,而不是在服务器端或客户端?因为这当然更多的是算法,而不是数据库。
with cte as (
    select id, start, stop, interval from table t
    union all
    select id, dateadd(MINUTE, interval, start) start, stop, interval
    from cte c
    where start < stop
)
select id, start as start_interval from cte c
order by 1