[英]How to generate last date of every month between two dates in PostgreSQL?
我想生成兩個日期之間每個月的最后日期列表。 例如,我想生成
從2004-01-31
到2005-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.