簡體   English   中英

如何在PostgreSQL中的兩個日期之間生成每個月的最后一個日期?

[英]How to generate last date of every month between two dates in PostgreSQL?

我想生成兩個日期之間每個月的最后日期列表。 例如,我想生成

2004-01-312005-08-31結果應該是這樣的

2004-01-31
2004-02-29
2004-03-31
2004-04-30
2004-05-31
.
.
.
2005-07-31
2005-08-31

誰能幫助我如何做到這一點並在 PostgreSQL 中得到這個結果? 謝謝! 我正在使用 postgreSQL 8.2.15

select to_date('2004-01-31','YYYY-MM-DD') + (dates*interval '1 month')
from generate_series(0,19,1) dates

您可以計算開始日期和結束日期之間的月數,然后構建一個開始日期 + 1 個月的列表,只要沒有達到結束日期:

SELECT TO_DATE('2004-01-31','YYYY-MM-DD') + (d*INTERVAL '1 MONTH')
FROM generate_series(0,(SELECT CAST(EXTRACT(YEAR FROM age
(TO_DATE('2005-08-31','YYYY-MM-DD'), TO_DATE('2004-01-31','YYYY-MM-DD'))) * 12 +
EXTRACT(MONTH FROM age(TO_DATE('2005-08-31','YYYY-MM-DD'), 
TO_DATE('2004-01-31','YYYY-MM-DD'))) AS INT)),1) d

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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