[英]Extracting number of months from an interval
我究竟做錯了什么?
SELECT DATE_PART('month', '2018-05-31'::timestamp - '2018-02-24'::timestamp);
它返回0! 每時每刻。 為什么?
我在PostgreSQL 10.4上。
你有:
t=# select '2018-05-31'::timestamp - '2018-02-24'::timestamp;
?column?
----------
96 days
(1 row)
所以:
t=# SELECT DATE_PART('day', '2018-05-31'::timestamp - '2018-02-24');
date_part
-----------
96
(1 row)
嘗試:
t=# SELECT DATE_PART('month', justify_interval('2018-05-31'::timestamp - '2018-02-24'::timestamp));
date_part
-----------
3
(1 row)
我認為應該在與date_part
一起使用之前證明間隔的合理性
https://www.postgresql.org/docs/current/static/functions-datetime.html#FUNCTIONS-DATETIME-EXTRACT-清楚-是的...
Vao Tsun解釋了原因。
一種適合您的解決方案可能是使用age
函數,該函數以年,月和日為單位設置時間間隔的格式:
SELECT date_part('month', age('2018-05-31'::timestamp, '2018-02-24'::timestamp));
date_part
-----------
3
(1 row)
這將返回更准確的結果,因為不必假定每個月都有30天。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.