DATE_TRUNC
Rundet ein Datum mit Uhrzeit oder ein Intervall auf die angegebene Einheit ab.
PostgreSQL 17.9
DATE_TRUNC(field, source[, time_zone])- [ ]optionaler Teil
- field
- Einheit, auf die abgerundet wirdtext'microseconds''milliseconds''second''minute''hour''day''week''month''quarter''year''decade''century''millennium'
- source
- Datum mit Uhrzeit oder Intervalltimestamp | interval
- time_zone
- Zeitzone für einen timestamptz-Wert, standardmäßig aus der Einstellung TimeZonetextOptional
Rückgabewert
Wert desselben Typs wie source mit zurückgesetzten kleineren Teilen: bei month der Monatserste um 00:00; bei date timestamptz
Beispiele
Monatsanfang für ein Datum
PostgreSQL 17.9
SELECT DATE_TRUNC('month', TIMESTAMP '2023-02-15 10:20:30');Montag derselben Woche
PostgreSQL 17.9
SELECT DATE_TRUNC('week', TIMESTAMP '2024-03-08 14:30:00');Zahlungssummen nach Monaten
PostgreSQL 17.9
SELECT DATE_TRUNC('month', date) AS MONTH,
SUM(amount * unit_price) AS total
FROM Payments
GROUP BY DATE_TRUNC('month', date)
ORDER BY MONTH;Details
Eine Woche ('week') beginnt am Montag. Mit einem Intervall funktioniert diese Einheit nicht: Die Abfrage endet mit dem Fehler unit "week" not supported for type interval. Für einen date-Wert ist das Ergebnis timestamptz: Um wieder ein Datum zu bekommen, hängst du ::date an. Die Funktion eignet sich zum Gruppieren nach Zeiträumen: GROUP BY DATE_TRUNC('month', date).