从年和日列创建日期列



是否有一种方法可以创建一个日期列,其中一列的年份为字符串,另一列的日期(doy)为整数?

我知道SELECT EXTRACT(DOW FROM TIMESTAMP '2001-02-16 20:38:40');SELECT to_char(date_trunc('year', now()) + interval '169 days', 'MM/DD')这样的方法,但当试图替换"硬编码"时;我总是得到一些错误

SELECT s.id, s.year, s.doy, 
((s.year||'-01-01')::date + (s.doy||' days')::interval )::date AS date
FROM table_name AS s

(s.year||'-01-01')(s.doy||' days')将列值与所需字符串连接起来,::date::interval更改结果字符串类型

您可以使用make_date()函数并直接添加天数,因为date + integer是有效的操作:

select make_date(s.year, 1, 1) + s.doy as date
from ...

最新更新