sql >> Base de Datos >  >> RDS >> PostgreSQL

Filtrar por rango de fechas (mismo mes y día) a lo largo de los años

Suponiendo (con un acto de fe) que desea fechas entre ciertos días del año independientemente del año (como si está enviando un lote de tarjetas de cumpleaños o algo así), puede configurar una prueba con esto:

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

Y puede usar "constructores de valor de fila" para seleccionar fácilmente el rango deseado:

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

Lo que 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)