Beim Abfragen einer Datenbank zum Abrufen von Datensätzen innerhalb eines bestimmten Datumsbereichs ist es häufig erforderlich, den letzten Tag einzubeziehen des Vormonats. Dieser Bereich kann je nach aktuellem Datum jeden Monat variieren.
Um den letzten Tag des Vormonats ohne Verwendung einer Funktion zu ermitteln, können Sie die folgende Abfrage für a verwenden Datumsspalte:
SELECT * FROM tbl WHERE my_date BETWEEN date_trunc('month', now())::date - 1 AND now()::date
Die Funktion date_trunc('month', now()) gibt den ersten Tag des aktuellen Monats zurück. Indem wir mit dem Subtraktionsoperator einen Tag von diesem Ergebnis subtrahieren, erhalten wir den letzten Tag des Vormonats.
Für eine Zeitstempelspalte ist die Abfrage etwas anders:
SELECT * FROM tbl WHERE my_timestamp >= date_trunc('month', now()) - interval '1 day' AND my_timestamp < date_trunc('day' , now()) + interval '1 day'
Date_trunc Die Funktion ('month', now()) gibt den Beginn des aktuellen Monats als Zeitstempel zurück. Um den letzten Tag des Vormonats zu erhalten, subtrahieren wir einen Tag mithilfe des Ausdrucks - Intervall '1 Tag'.
Für die zweite Bedingung addieren wir einen Tag zum date_trunc('day' , now()) ) Ergebnis unter Verwendung des Intervalls „1 Tag“, um sicherzustellen, dass der Bereich „heute“ vollständig umfasst.
Wenn Sie lieber eine Funktion verwenden möchten, können Sie die verwenden LAST_DAY()-Funktion, um das gleiche Ergebnis zu erzielen:
SELECT * FROM tbl WHERE my_date BETWEEN LAST_DAY(DATE_SUB(NOW(), INTERVAL 1 MONTH)) AND NOW()
Diese Funktion berechnet explizit den letzten Tag des Vormonats basierend auf dem aktuellen Datum.
Das obige ist der detaillierte Inhalt vonWie erhalte ich den letzten Tag des vorherigen Monats in PostgreSQL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!