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

Filtrer efter datointerval (samme måned og dag) på tværs af år

Hvis du antager (med et spring i tro), at du vil have datoer mellem bestemte dage af året uanset året (som hvis du sender et parti fødselsdagskort eller lignende), kan du opsætte en test med dette:

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

Og du kan bruge "rækkeværdikonstruktører" til nemt at vælge det ønskede område:

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

Hvilket giver:

     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)


  1. Rows_sent:12 Rows_examined:549024 - hvordan optimerer man mySQL-forespørgslen?

  2. MySQL:hvordan man får x antal resultater pr. gruppering

  3. Hurtigste tilfældige valg HVOR kolonne X er Y (NULL)

  4. Kan ikke vise kommaseparerede værdier i en tabel