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

jay*_*ayD 2 postgresql date

我正在尝试在 Postgres 中查找去年年底的日期。

这将给我上一年的第一天

SELECT date_trunc('year', now()- interval '1 year')
Run Code Online (Sandbox Code Playgroud)

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

但是尝试从今年的第一天删除 1day 并不能得到上一年的最后一天:

SELECT date_trunc('year', now() - interval '1 day')
Run Code Online (Sandbox Code Playgroud)

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

当我期待的是 2018-12-31

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

前几年的行为相同:

SELECT date_trunc('year', now()- interval '2 year');
Run Code Online (Sandbox Code Playgroud)

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

但 :

SELECT date_trunc('year', now()- interval '1 year' - interval '1 day');
Run Code Online (Sandbox Code Playgroud)

2018-01-01 00:00:00 当我期待时返回#=>2017-12-31

-- 为了供将来参考,我将在 2019 年发布此内容。