我想在redshift中使用generate系列函数,但还没有成功.
redshift文档说它不受支持.以下代码确实有效:
select *
from generate_series(1,10,1)
Run Code Online (Sandbox Code Playgroud)
输出:
1
2
3
...
10
Run Code Online (Sandbox Code Playgroud)
我想对约会做同样的事情.我尝试了很多变种,包括:
select *
from generate_series(date('2008-10-01'),date('2008-10-10 00:00:00'),1)
Run Code Online (Sandbox Code Playgroud)
踢出去:
ERROR: function generate_series(date, date, integer) does not exist
Hint: No function matches the given name and argument types.
You may need to add explicit type casts. [SQL State=42883]
Run Code Online (Sandbox Code Playgroud)
还尝试过:
select *
from generate_series('2008-10-01 00:00:00'::timestamp,
'2008-10-10 00:00:00'::timestamp,'1 day')
Run Code Online (Sandbox Code Playgroud)
并试过:
select *
from generate_series(cast('2008-10-01 00:00:00' as datetime),
cast('2008-10-10 00:00:00' as datetime),'1 day')
Run Code Online (Sandbox Code Playgroud)
两个都踢了出来:
ERROR: function generate_series(timestamp without time zone, timestamp without time zone, …Run Code Online (Sandbox Code Playgroud) 当我运行SQL查询时:
select generate_series(0,g)
from ( select date(date1) - date(date2) as g from mytable ;
Run Code Online (Sandbox Code Playgroud)
它返回一个错误:
INFO: Function "generate_series(integer,integer)" not supported.
ERROR: Specified types or functions (one per INFO message) not supported
on Redshift tables.
Run Code Online (Sandbox Code Playgroud)
但是当我运行这个查询时:
select generate_series(0, g) from (select 5 as g)
Run Code Online (Sandbox Code Playgroud)
它返回以下响应:
generate_series
-----------------
0
1
2
3
4
5
(6 rows)
Run Code Online (Sandbox Code Playgroud)
为什么第二个查询有效,而第一个查询失败?