簡體   English   中英

從間隔中提取月份數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM