Problem:
Du vil gerne vise gårsdagens dato (uden tid) i en PostgreSQL-database.
Løsning 1:
SELECT current_date - INTEGER '1' AS yesterday_date;
Forudsat at i dag er 2020-09-24, er resultatet:
yesterday_date |
---|
2020-09-23 |
Diskussion:
For at få gårsdagens dato skal du trække en dag fra dagens dato. Brug current_date
for at få dagens dato. Bemærk, at du ikke behøver parenteser i slutningen af current_date
fungere. I PostgreSQL kan du trække fra eller tilføje et hvilket som helst antal dage ved hjælp af INTEGER
søgeord. Her, da du skal trække en dag fra, bruger du - INTEGER '1'
for at få gårsdagens dato. Bemærk, at resultatet af denne beregning stadig har kolonnetypen date
.
Løsning 2:
SELECT (current_date - INTERVAL '1 day')::date AS yesterday_date;
Forudsat at i dag er 2020-09-24, er resultatet:
yesterday_date |
---|
2020-09-23 |
Diskussion:
Få dagens dato ved at bruge current_date
. Du skal trække et interval på én dag fra den aktuelle dato. For at gøre dette skal du bruge INTERVAL
søgeord, som opretter et hvilket som helst tidspunkt/datointerval, du ønsker (her '1 day'
). , som i PostgreSQL er det samme som 24 timer). Trækker INTERVAL '1 day'
fra fra dags dato vil resultere i en kolonne formateret som et tidsstempel, så du skal caste den til date
. Den hurtigste måde at gøre det på i PostgreSQL er at tilføje ::date
til hele udtrykket (husk at sætte udtrykket i parentes).
Du kan selvfølgelig gå tilbage med et hvilket som helst tidsinterval lige så nemt. Her er et eksempel:
SELECT (current_date - INTERVAL '3 months 10 days')::date;
En INTERVAL
kan også tilføjes til en date. Så her er en måde, hvis du ønsker at få morgendagens dato:
SELECT (current_date + INTERVAL '1 day')::date AS tomorrow_date;