Beide Lösungen enthalten letzten Tag des Vormonats und auch inklusive alles von "heute".
Für ein date
Spalte:
SELECT *
FROM tbl
WHERE my_date BETWEEN date_trunc('month', now())::date - 1
AND now()::date
Sie können einfache ganzzahlige Werte von einem date
subtrahieren (aber nicht von einem timestamp
) um Tage abzuziehen. Dies ist der einfachste und schnellste Weg.
Für einen timestamp
Spalte:
SELECT *
FROM tbl
WHERE my_timestamp >= date_trunc('month', now()) - interval '1 day'
AND my_timestamp < date_trunc('day' , now()) + interval '1 day'
Beachten Sie, dass ich den <
verwende Operator für die zweite Bedingung, um genaue Ergebnisse zu erhalten (~ "vor morgen").
Ich caste nicht auf date
in der zweiten Abfrage. Stattdessen füge ich ein interval '1 day'
hinzu , um ein Hin- und Her-Casting zu vermeiden.
Sehen Sie sich die Datums-/Zeittypen und -funktionen im Handbuch an.