Amazon Redshift:如何创建包含时间序列的表

时间:2017-05-03 20:30:46

标签: sql amazon-redshift

我想在Redshift中创建一个表格,其中包含date列,其值从今天到接下来的3年。

        date         
---------------------
 2017-05-03 00:00:00
 2017-05-04 00:00:00
 2017-05-05 00:00:00
 2017-05-06 00:00:00

我正在尝试使用create table as select_query语句执行此操作。

 create table tmp_date_series as select now()::date::timestamp + generate_series(0, 1000);

但是,上述查询失败并显示错误 -

INFO:  Function "now()" not supported.
INFO:  Function "generate_series(integer,integer)" not supported.
ERROR:  Specified types or functions (one per INFO message) not supported on Redshift tables.

但是,如果我单独运行选择查询 - select now()::date::timestamp + generate_series(0, 150) as date;,它运行时没有任何错误 -

        date         
---------------------
 2017-05-03 00:00:00
 2017-05-04 00:00:00
 2017-05-05 00:00:00

任何想法如何创建这样的表?

1 个答案:

答案 0 :(得分:3)

很遗憾,Redshift不支持generate_series

我的团队正在使用像这样的CTE来获取从特定日期开始的一系列连续日期:

with dates as (
    select
        (trunc(getdate()) + row_number() over (order by 1))::date as date
    from
        large_enough_table
    limit
        150
)

然后您可以将其用作:

select date
from dates
order by date
limit 5

并获得:

2018-12-13
2018-12-14
...