首页 > 解决方案 > 计算两个日期之间每个月的天数 - postgresql

问题描述

我正在尝试编写一个查询,它给出两个指定日期之间每个月的天数。

例子:

日期1:2018-01-01

日期2:2018-05-23

预期输出:

month      days

2018-01-01, 31

2018-02-01, 28

2018-03-01, 31

2018-04-01, 30

2018-05-01, 23

标签: postgresql

解决方案


使用generate_seriesgroup by date_trunc

SELECT date_trunc('month',dt) AS month,
       COUNT(*) as days
FROM generate_series( DATE '2018-01-01',DATE '2018-05-23',interval '1 DAY' )
as dt group by date_trunc('month',dt) 
order by month;

演示


推荐阅读