PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Filtra per intervallo di date (stesso mese e giorno) negli anni

Supponendo (con un atto di fede) che tu voglia date comprese tra determinati giorni dell'anno indipendentemente dall'anno (come se stai inviando una serie di biglietti di compleanno o qualcosa del genere), puoi impostare un test con questo:

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
\.

E puoi usare "costruttori di valori di riga" per selezionare facilmente l'intervallo desiderato:

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

Che produce:

     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)