PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Filtrer par plage de dates (même mois et jour) sur plusieurs années

En supposant (avec un acte de foi) que vous vouliez des dates entre certains jours de l'année, quelle que soit l'année (comme si vous envoyiez un lot de cartes d'anniversaire ou quelque chose du genre), vous pouvez configurer un test avec ceci :

CREATE TABLE d (dt date);
COPY d FROM STDIN;
1840-02-28
1990-06-21
1991-02-15
1991-04-25
1992-05-30
1995-03-04
1995-04-10
2001-02-03
2010-04-06
\.

Et vous pouvez utiliser des "constructeurs de valeur de ligne" pour sélectionner facilement la plage souhaitée :

SELECT * FROM d
  WHERE (EXTRACT(MONTH FROM dt), EXTRACT(DAY FROM dt))
           BETWEEN (2, 15) AND (6, 21);

Ce qui donne :

     dt     
------------
 1840-02-28
 1990-06-21
 1991-02-15
 1991-04-25
 1992-05-30
 1995-03-04
 1995-04-10
 2010-04-06
(8 rows)