DJo*_*DJo 7 generate-series amazon-redshift
我试过以下:
SELECT * FROM generate_series(2,4);
generate_series
-----------------
2
3
4
(3 rows)
SELECT * FROM generate_series(5,1,-2);
generate_series
-----------------
5
3
1
(3 rows)
Run Code Online (Sandbox Code Playgroud)
但是当我尝试时,
select * from generate_series('2011-12-31'::timestamp, '2012-12-31'::timestamp, '1 day');
Run Code Online (Sandbox Code Playgroud)
它产生了错误.
Run Code Online (Sandbox Code Playgroud)ERROR: function generate_series(timestamp without time zone, timestamp without time zone, "unknown") does not exist HINT: No function matches the given name and argument types. You may need to add explicit type casts.
我在Redshift 1.0.757上使用PostgreSQL 8.0.2.
知道为什么会这样吗?
更新:
generate_series现在正在使用Redshift.
SELECT CURRENT_DATE::TIMESTAMP - (i * interval '1 day') as date_datetime
FROM generate_series(1,31) i
ORDER BY 1
Run Code Online (Sandbox Code Playgroud)
这将生成最近30天的日期
a_h*_*ame 19
generate_series()Postgres 8.4中添加了支持日期和时间戳的版本.
由于Redshift基于Postgres 8.0,您需要使用不同的方式:
select timestamp '2011-12-31 00:00:00' + (i * interval '1 day')
from generate_series(1, (date '2012-12-31' - date '2011-12-31')) i;
Run Code Online (Sandbox Code Playgroud)
如果您"只"需要日期,则可以缩写为:
select date '2011-12-31' + i
from generate_series(1, (date '2012-12-31' - date '2011-12-31')) i;
Run Code Online (Sandbox Code Playgroud)
generate_series 现在正在使用 Redshift。
SELECT CURRENT_DATE::TIMESTAMP - (i * interval '1 day') as date_datetime
FROM generate_series(1,31) i
ORDER BY 1
Run Code Online (Sandbox Code Playgroud)
这将生成过去 30 天的日期
| 归档时间: |
|
| 查看次数: |
4284 次 |
| 最近记录: |