DATE_TRUNC
Rundet ein Datum mit Uhrzeit oder ein Intervall auf die angegebene Einheit ab.
PostgreSQL 17.5
DATE_TRUNC(field, source[, time_zone])Parameter
- fieldtext
- Einheit, auf die abgerundet wird
- Werte:'microseconds''milliseconds''second''minute''hour''day''week''month''quarter''year''decade''century''millennium'
- sourcetimestamp | interval
- Datum mit Uhrzeit oder Intervall
- time_zonetextoptional
- Zeitzone für einen timestamptz-Wert, standardmäßig aus der Einstellung TimeZone
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.5
SELECT DATE_TRUNC('month', TIMESTAMP '2023-02-15 10:20:30');Montag derselben Woche
PostgreSQL 17.5
SELECT DATE_TRUNC('week', TIMESTAMP '2024-03-08 14:30:00');Zahlungssummen nach Monaten
PostgreSQL 17.5
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. 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).