首页 > 解决方案 > 如何从当前时间戳生成 1 年中每一天的每一小时的序列

问题描述

我有一个查询生成一年中的每一天(如下所示)。如果我想从当前时间戳中获取一年中每一天的每个小时的一系列数据怎么办?示例:今天是 2019 年 7 月 23 日上午 10:30:00,我希望得到的结果如下

2019-07-23 20:30:00
2019-07-23 20:00:00
2019-07-23 19:00:00
2019-07-23 18:00:00
.
.
.
2018-07-23 20:00:00

这是 Eclipse Birt 的 Redshift (PostgreSQL 8.0.2) 查询。希望为日期和时间创建一个参数,但如果 2 个单独的范围似乎很难实现。

select cast(convert_timezone('UTC','AEST',cast(now() as timestamp without time zone)) as date) - generate_series(0, 365) date, 
to_char(cast(convert_timezone('UTC','AEST',cast(now() as timestamp without time zone)) as date) - generate_series(0, 365), 'dd/mm/yyyy') date_disp;

示例:今天是 2019 年 7 月 23 日上午 10:30:00,我希望得到的结果如下:

2019-07-23 20:30:00
2019-07-23 20:00:00
2019-07-23 19:00:00
2019-07-23 18:00:00
.
.
.
2018-07-23 20:00:00

标签: amazon-web-servicesamazon-redshift

解决方案


您可以使用DATEADD Redshift 函数,使用“h”、“hr”或“hrs”作为您的第一个参数。可以在此处此处找到此功能的文档。


推荐阅读