Problem:
Sie möchten das gestrige Datum (ohne Uhrzeit) in einer PostgreSQL-Datenbank anzeigen.
Lösung 1:
SELECT current_date - INTEGER '1' AS yesterday_date;
Unter der Annahme, dass heute der 24.09.2020 ist, lautet das Ergebnis:
Gestern_Datum |
---|
2020-09-23 |
Diskussion:
Um das gestrige Datum zu erhalten, müssen Sie vom heutigen Datum einen Tag abziehen. Verwenden Sie current_date
um das heutige Datum zu erhalten. Beachten Sie, dass Sie am Ende von current_date
keine Klammern benötigen Funktion. In PostgreSQL können Sie mit INTEGER
eine beliebige Anzahl von Tagen subtrahieren oder addieren Stichwort. Da Sie hier einen Tag abziehen müssen, verwenden Sie - INTEGER '1'
um das gestrige Datum zu erhalten. Beachten Sie, dass das Ergebnis dieser Berechnung immer noch den Spaltentyp date
hat .
Lösung 2:
SELECT (current_date - INTERVAL '1 day')::date AS yesterday_date;
Unter der Annahme, dass heute der 24.09.2020 ist, lautet das Ergebnis:
Gestern_Datum |
---|
2020-09-23 |
Diskussion:
Holen Sie sich das heutige Datum mit current_date
. Sie müssen ein Intervall von einem Tag vom aktuellen Datum abziehen. Verwenden Sie dazu das INTERVAL
Schlüsselwort, das ein beliebiges Zeit-/Datumsintervall erstellt (hier '1 day'
, was in PostgreSQL 24 Stunden entspricht). Subtrahieren von INTERVAL '1 day'
vom heutigen Datum ergibt eine Spalte, die als Zeitstempel formatiert ist, also müssen Sie sie in date
umwandeln . Der schnellste Weg, dies in PostgreSQL zu tun, ist das Anhängen von ::date
auf den gesamten Ausdruck (denken Sie daran, den Ausdruck in Klammern zu setzen).
Natürlich können Sie genauso einfach um ein beliebiges Zeitintervall zurückgehen. Hier ist ein Beispiel:
SELECT (current_date - INTERVAL '3 months 10 days')::date;
Ein INTERVAL
können auch hinzugefügt werden zu einem Termin. So können Sie das morgige Datum abrufen:
SELECT (current_date + INTERVAL '1 day')::date AS tomorrow_date;