倒计时 Postgres 中的日子和月份

Countdown the days and months within Postgres

我知道 date_part('days', age(release_date)),它将向您显示 release_date col (timestamp) 的天数。例如,如果发布日期为 1994-05-30,则 date_part 计算结果为 5 days.

但是,如何从倒计时的角度,即换一个版本,才能知道。还剩 2 days 到此发行版的周年纪念日?例如,这只是 365 - date_part('days', age(release_date)) 的问题吗?或者有更好的方法吗?

将发布日期换算成当前年份并从中减去当前日期。假设 release_date 是实际的 date:

SELECT *
     , (release_date + (date_trunc('year', LOCALTIMESTAMP)
                      - date_trunc('year', release_date)))::date
     - CURRENT_DATE AS days_till_aniversary
FROM   release;

db<>fiddle here

一个地方 LOCALTIMESTAMP 而另一个地方 CURRENT_DATE 是有原因的。这样,计算是在不涉及时区的情况下完成的。 (除了两者都取决于开始时会话的时区设置。)减去日期会产生一个整数,表示天数差异。

在今年的周年纪念日之后产生负数。