倒计时 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
是有原因的。这样,计算是在不涉及时区的情况下完成的。 (除了两者都取决于开始时会话的时区设置。)减去日期会产生一个整数,表示天数差异。
在今年的周年纪念日之后产生负数。
我知道 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
是有原因的。这样,计算是在不涉及时区的情况下完成的。 (除了两者都取决于开始时会话的时区设置。)减去日期会产生一个整数,表示天数差异。
在今年的周年纪念日之后产生负数。