Probleem:
U wilt de datum van gisteren (zonder tijd) weergeven in een PostgreSQL-database.
Oplossing 1:
SELECT current_date - INTEGER '1' AS yesterday_date;
Ervan uitgaande dat het vandaag 24-09-2020 is, is het resultaat:
yesterday_date |
---|
23-09-2020 |
Discussie:
Om de datum van gisteren te krijgen, moet u één dag aftrekken van de datum van vandaag. Gebruik current_date
om de datum van vandaag te krijgen. Merk op dat je geen haakjes nodig hebt aan het einde van de current_date
functie. In PostgreSQL kunt u een willekeurig aantal dagen aftrekken of optellen met behulp van de INTEGER
trefwoord. Omdat je hier één dag moet aftrekken, gebruik je - INTEGER '1'
om de datum van gisteren te krijgen. Merk op dat het resultaat van deze berekening nog steeds het kolomtype date
heeft .
Oplossing 2:
SELECT (current_date - INTERVAL '1 day')::date AS yesterday_date;
Ervan uitgaande dat het vandaag 24-09-2020 is, is het resultaat:
yesterday_date |
---|
23-09-2020 |
Discussie:
Krijg de datum van vandaag met behulp van current_date
. U moet een interval van één dag aftrekken van de huidige datum. Gebruik hiervoor de INTERVAL
trefwoord, dat elk gewenst tijd-/datuminterval creëert (hier, '1 day'
, wat in PostgreSQL hetzelfde is als 24 uur). Aftrekken INTERVAL '1 day'
vanaf de datum van vandaag resulteert in een kolom die is opgemaakt als een tijdstempel, dus u moet deze naar date
casten . De snelste manier om dit te doen in PostgreSQL is het toevoegen van ::date
naar de hele uitdrukking (vergeet niet om de uitdrukking tussen haakjes te zetten).
Natuurlijk kunt u net zo gemakkelijk teruggaan met elk tijdsinterval. Hier is een voorbeeld:
SELECT (current_date - INTERVAL '3 months 10 days')::date;
Een INTERVAL
kan ook worden toegevoegd tot een datum. Dus, hier is een manier als je de datum van morgen wilt weten:
SELECT (current_date + INTERVAL '1 day')::date AS tomorrow_date;