我正在尝试在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年发布。
答案 0 :(得分:3)
这是一个操作顺序问题。在减去之前截断日期:
SELECT date_trunc('year', now()) - interval '1 day';
SELECT date_trunc('year', now()- interval '1 year') - interval '1 day';
披露:我为EnterpriseDB (EDB)工作