【发布时间】:2016-04-28 21:21:27
【问题描述】:
我正在创建一个包含 2 列的表:
- Day_time(时间从
1978-01-01 00:00:00周日到1978-01-07 23:59:00.0周六,粒度:分钟) - Time_id(每分钟的唯一 id),待填充
我填充了第一列。我想填充第二列。
我现在是怎么做的:
EXTRACT(dayofweek FROM day_time) * 10000 + DATEDIFF('minutes', TRUNC(day_time), day_time)
我基本上想要一个函数,我可以传递任何日期,它会告诉我一周内我在哪里。 所以,我需要一个函数,就像上面的函数一样。只是更加优化,我在其中给出一个日期并获得一个唯一的 ID。唯一 ID 应每周重复一次。
示例:
Jan 1, 2015 00:00:00的 ID 将与Jan 8, 2015 00:00:00相同。
Why 1978-01-01? cuz it starts from a Sunday.
Why 10,000? cuz the number of minutes in a day are in four digits.
【问题讨论】:
-
@wingedpanther,感谢士兵的回复。对不起,我不清楚。我想要一个像我写的那样的函数,因为我也想即时计算相同的 Id。我知道递归 CTE 的兄弟,我不需要 CTE 来生成唯一密钥,我可以只是身份。我是对的,还是对的?
-
Amazon Redshift 是否支持任何以下 PostgreSQL 功能:CTE、递归 CTE、序列、generate_series()?
-
试试这个
insert into tbl select row_number() over() id,dtm from( select generate_series('1978-01-01 00:00:00'::timestamp,'1978-01-02 23:59:00.0'::timestamp,'1min'::interval) dtm )t...最初我只是误解了你的要求。 -
错误:
function generate_series(timestamp without time zone, timestamp without time zone, interval) does not exist;但generate_series(1,30)工作正常。我是新手,你能看到这个吗:stackoverflow.com/questions/17282276/… -
This是……
标签: sql postgresql query-optimization amazon-redshift