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)