从postgreSQL中的大日期中提取年份("日期超出时间戳范围")



我得到一个错误"日期超出时间戳的范围";在以下情况下:

select '1000000-01-01'::date; --> 1000000-01-01 -> ok!
select extract(year from ('1000000-01-01'::date)) -> date out of range for timestamp
select to_char('1000000-01-01'::date, 'YYYY') -> date out of range for timestamp

我想问题在于某个地方的日期被转换为时间戳。

如何在我的情况下提取年份?

是的,似乎任何时候对date执行操作时,它都会转换为timestamp。我能想到的最好的:

select split_part('1000000-01-01', '-', 1) as year;
year   
---------
1000000
--If value is actual date:
select split_part('1000000-01-01'::date::text, '-', 1) as year;
year   
---------
1000000

最新更新