Problem:
Du vill visa gårdagens datum (utan tid) i en PostgreSQL-databas.
Lösning 1:
SELECT current_date - INTEGER '1' AS yesterday_date;
Om vi antar att det är 2020-09-24 idag är resultatet:
yesterday_date |
---|
2020-09-23 |
Diskussion:
För att få gårdagens datum måste du subtrahera en dag från dagens datum. Använd current_date
för att få dagens datum. Observera att du inte behöver hakparenteser i slutet av current_date
fungera. I PostgreSQL kan du subtrahera eller lägga till valfritt antal dagar med INTEGER
nyckelord. Här, eftersom du behöver subtrahera en dag, använder du - INTEGER '1'
för att få gårdagens datum. Observera att resultatet av denna beräkning fortfarande har kolumntypen date
.
Lösning 2:
SELECT (current_date - INTERVAL '1 day')::date AS yesterday_date;
Om vi antar att det är 2020-09-24 idag är resultatet:
yesterday_date |
---|
2020-09-23 |
Diskussion:
Få dagens datum med current_date
. Du måste subtrahera ett intervall på en dag från det aktuella datumet. För att göra detta, använd INTERVAL
nyckelord, som skapar vilket tid-/datumintervall du vill (här, '1 day'
). , vilket i PostgreSQL är detsamma som 24 timmar). Subtraherar INTERVAL '1 day'
från dagens datum kommer att resultera i en kolumn formaterad som en tidsstämpel, så du måste casta den till date
. Det snabbaste sättet att göra det i PostgreSQL är att lägga till ::date
till hela uttrycket (kom ihåg att omge uttrycket inom parentes).
Naturligtvis kan du gå tillbaka med vilket tidsintervall som helst lika enkelt. Här är ett exempel:
SELECT (current_date - INTERVAL '3 months 10 days')::date;
En INTERVAL
kan också läggas till till en dejt. Så här är ett sätt om du vill få morgondagens datum:
SELECT (current_date + INTERVAL '1 day')::date AS tomorrow_date;