sql >> Databáze >  >> RDS >> PostgreSQL

Filtrujte podle období (stejný měsíc a den) napříč roky

Za předpokladu (s důvěrou), že chcete data mezi určitými dny v roce bez ohledu na rok (jako když posíláte dávku narozeninových přání nebo tak), můžete nastavit test s tímto:

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

A můžete použít "konstruktory hodnot řádku" ke snadnému výběru požadovaného rozsahu:

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

Což dává:

     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. Jak odeslat libovolné parametry do triggeru Oracle?

  2. Seznam všech indexů v databázi SQLite

  3. Zakázat zalamování ve výstupu Psql

  4. Konvence pojmenování PostgreSQL