我想在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
任何想法如何创建这样的表?
答案 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
...