Postgres:获取自日期以来的天数

bcl*_*man 3 postgresql

我有一张关于文章信息的表格。我有一个published_at专栏,timestamp without time zone想要计算每篇文章发表的时间,以天为单位。

所以如果它是一周前发布的,我应该回来7。

知道该怎么做吗?

我知道 Postgres 有,NOW()但我可以减去然后取DAY()吗?

谢谢!

Vao*_*sun 7

您可以使用 date_trunc,例如:

t=# select date_trunc('day',now() - '2016-01-01'::date);
 date_trunc
------------
 580 days
(1 row)
Run Code Online (Sandbox Code Playgroud)

或对于数字结果,extract

t=# select extract('day' from date_trunc('day',now() - '2016-01-01'::date));
 date_part
-----------
       580
(1 row)
Run Code Online (Sandbox Code Playgroud)


a_h*_*ame 6

您可以从另一个日期中减去一个日期,结果将是两个日期之间的天数。如果其中一个是时间戳,只需将其转换为日期:

select current_date - published_at::date
from your_table;
Run Code Online (Sandbox Code Playgroud)

如果您想获得小于 7 天的那些,您可以使用:

select current_date - published_at::date as age_in_days
from your_table
where published_at >= current_date - 7;
Run Code Online (Sandbox Code Playgroud)