不太确定如何描述这一点,但我会试一试。
背景
我需要将一些历史制造数据回填到数据仓库中,并将每小时为每个生产线记录一次。这将是一次性活动,而不是一个持续的过程。
所需结果
我需要创建一个表变量,其中包含每小时的细分,即
Row ID | Start Time
1 | 2018-01-01 00:00:00
2 | 2018-01-01 01:00:00
...etc...
nn | 2018-10-12 10:00:00
如果我可以将两个时间点之间的时间分配到一个表(已定义)中,那么我可以运行相关例程来回填数据。我确信这很容易实现-有人可以给我任何指示吗?
谢谢。
答案 0 :(得分:2)
此解决方案使用递归:
DECLARE @starttime datetime='2018-01-01 00:00:00'
DECLARE @endtime datetime='2018-01-02 00:00:00'
;WITH hour_tbl(row_id,hour_value) AS (
SELECT 1,@starttime -- Seed Row
UNION ALL
SELECT row_id+1,dateadd(hour,1,hour_value) -- Recursion
FROM hour_tbl
WHERE dateadd(hour,1,hour_value)<=@endtime
)
SELECT *
FROM hour_tbl
请注意;
之前的WITH
答案 1 :(得分:1)
您的小时工时差