sql >> Database >  >> RDS >> PostgreSQL

Filteren op datumbereik (dezelfde maand en dag) over de jaren heen

Ervan uitgaande (met een sprong in het diepe) dat je datums wilt tussen bepaalde dagen van het jaar, ongeacht het jaar (zoals als je een partij verjaardagskaarten verstuurt of zoiets), kun je hiermee een test opzetten:

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

En u kunt "rijwaarde-constructors" gebruiken om eenvoudig het gewenste bereik te selecteren:

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

Wat oplevert:

     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. 'vrienden van vrienden' SQL-query

  2. Vreemd afrondingsprobleem

  3. Speel 2.4 - Slick 3.0.0 - VERWIJDEREN werkt niet

  4. Loop van categorie naar subcategorie in PHP