Nombre de jours dans chaque mois

La requête suivante permet de connaître pour chaque mois d'une période donnée (ici de l'année courante) son nombre de jours.

SELECT to_char(MONTH, 'FMMonth YYYY') AS MONTH, date_part('day',MONTH + '1 month - 1 day'::INTERVAL) AS lastday FROM ( SELECT (date_part('year', CURRENT_DATE) || '-' || m || '-01')::DATE AS MONTH FROM generate_series(1, 12) m) months;

On obtient le résultat suivant :

month | lastday
----------------+---------
January 2006 | 31
February 2006 | 28
March 2006 | 31
April 2006 | 30
May 2006 | 31
June 2006 | 30
July 2006 | 31
August 2006 | 31
September 2006 | 30
October 2006 | 31
November 2006 | 30
December 2006 | 31
(12 rows)

–
dim le 08/09/2006