是否有一种方法可以创建一个日期列,其中一列的年份为字符串,另一列的日期(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 ...