2017-08-03 79 views
1

我有一個關於文章的信息表。我有一個published_at列,這是一個timestamp without time zone,並且想要計算每篇文章在幾天前發佈的時間。Postgres:獲取日期以來的天數

所以如果它是一週前發佈的,我應該找回7

任何想法如何去?

我知道Postgres有NOW()但我可以減去然後取DAY()

謝謝!

回答

2

您可以從另一個減去一個日期,結果將是天數,兩者之間日期。如果其中一個是時間戳記,只需將其轉換爲一個日期:

select current_date - published_at::date 
from your_table; 

如果你想獲得那些年輕的那麼7天,你可以使用:

select current_date - published_at::date as age_in_days 
from your_table 
where published_at >= current_date - 7; 
2

可以使用date_trunc,如:

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

或數字結果,extract

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