You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Teradata中用SQL生成指定日期范围的小时级时间戳序列?

在Teradata中生成指定日期范围的小时级时间戳列表

当然可以,下面是两种实用的实现方式,能生成你需要的小时级时间戳列表:

方法一:使用递归CTE

这种方式逻辑直观,适合小范围日期生成:

WITH recursive hour_timestamps AS (
    -- 起始时间
    SELECT TIMESTAMP '2023-01-01 00:00:00' AS hour_ts
    UNION ALL
    -- 每次递增1小时,直到结束时间
    SELECT hour_ts + INTERVAL '1' HOUR
    FROM hour_timestamps
    WHERE hour_ts < TIMESTAMP '2023-01-20 23:00:00'
)
SELECT hour_ts
FROM hour_timestamps
ORDER BY hour_ts;

只需要修改起始和结束的TIMESTAMP值,就能生成对应范围的所有小时级时间戳。

方法二:利用系统日历表+小时序列(更高效)

Teradata自带的sys_calendar.calendar表包含完整日期数据,结合生成0-23的小时数,通过交叉连接生成结果,适合大范围日期:

SELECT
    CAST(c.calendar_date AS TIMESTAMP) + INTERVAL h.hour_num HOUR AS hour_ts
FROM
    sys_calendar.calendar c
CROSS JOIN (
    -- 生成0到23的小时数
    SELECT hour_num
    FROM (
        SELECT ROW_NUMBER() OVER(ORDER BY 1) - 1 AS hour_num
        FROM sys_calendar.calendar
        QUALIFY hour_num <= 23
    ) t
) h
WHERE
    c.calendar_date BETWEEN DATE '2023-01-01' AND DATE '2023-01-20'
ORDER BY hour_ts;

这个方法性能更优,尤其是日期范围较大时,能避免递归带来的性能损耗。

示例结果

生成的结果格式如下:

2023-01-01 00:00:00
2023-01-01 01:00:00
...
2023-01-01 23:00:00
2023-01-02 00:00:00
...
2023-01-20 23:00:00

内容的提问来源于stack exchange,提问作者user17178722

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 07:22:38