上一年的第一天和最后一天

时间:2019-12-10 04:34:41

标签: postgresql date

我正在尝试在Postgres中查找上一年末的日期。

这将给我去年的第一天

SELECT date_trunc('year', now()- interval '1 year')

返回正确的结果#=> 2018-01-01 00:00:00

但是尝试从当年第一天删除1天并不能给我上一年的最后一天:

SELECT date_trunc('year', now() - interval '1 day')

返回#=> 2018-01-01 00:00:00

我预计会在2018年12月31日

还是给我今年的第一天。即使我删除100天,它仍然会返回相同的结果。

前几年的行为相同:

SELECT date_trunc('year', now()- interval '2 year');

返回#=> 2017-01-01 00:00:00,这正是我的期望。

但是:

SELECT date_trunc('year', now()- interval '1 year' - interval '1 day');
当我期望2018-01-01 00:00:00

时,

返回#=> 2017-12-31

- 供将来参考,我将在2019年发布。

1 个答案:

答案 0 :(得分:3)

这是一个操作顺序问题。在减去之前截断日期:

SELECT date_trunc('year', now()) - interval '1 day';
SELECT date_trunc('year', now()- interval '1 year') - interval '1 day';

披露:我为EnterpriseDB (EDB)工作