Sql Amazon红移:如何创建包含时间序列的表
我想用红移创建一个表,它将有一列Sql Amazon红移:如何创建包含时间序列的表,sql,amazon-redshift,Sql,Amazon 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 我正试图使用创建表作为select\u查询语句来实现这一点 create table tmp_date_series as select now()::date::times
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
我正试图使用创建表作为select\u查询语句来实现这一点
create table tmp_date_series as select now()::date::timestamp + generate_series(0, 1000);
但是,上述查询失败,并出现错误-
INFO:不支持函数“now()”。
信息:不支持函数“生成_系列(整数,整数)”。
错误:红移表不支持指定的类型或函数(每个信息消息一个)。
但是如果我单独运行select查询-select now()::date::timestamp+generate_series(0150)as date代码>,它运行时没有任何错误-
date
---------------------
2017-05-03 00:00:00
2017-05-04 00:00:00
2017-05-05 00:00:00
知道如何创建这样的表吗?不幸的是,红移中不支持generate\u 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
...
遗憾的是,红移中不支持生成\u系列
我的团队使用这样的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
...
投票重新打开时,generate_series
在AWS红移上不可用。是否应该generate_series()
进入from
子句createtablex作为select(current_date+i)::timestamp from generate_series(01000)作为x(i)
作为旁白,您的问题中实际有效的查询只起作用,因为它只在leader节点上运行,该节点使用PostgreSQL 8.4的fork。只要您点击工作节点(例如,如果您使用任何“real”表),查询就会在那些没有generate_series
的节点上运行。您必须使用带有数字或cte的表,而不是generate_series
。投票重新打开时,generate_series
在AWS红移上不可用。是否应该generate_series()
进入from
子句createtablex作为select(current_date+i)::timestamp from generate_series(01000)作为x(i)
作为旁白,您的问题中实际有效的查询只起作用,因为它只在leader节点上运行,该节点使用PostgreSQL 8.4的fork。只要您点击工作节点(例如,如果您使用任何“real”表),查询就会在那些没有generate_series
的节点上运行。您必须使用带有数字或cte的表,而不是generate_series
。