SQL Academy
Premium
Funktionsreferenz

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');
date_trunc
2023-02-01

Montag derselben Woche

PostgreSQL 17.5
SELECT DATE_TRUNC('week', TIMESTAMP '2024-03-08 14:30:00');
date_trunc
2024-03-04

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;
monthtotal
2005-02-012140
2005-03-012159
2005-04-0164
2005-05-01135
2005-06-012475
2005-07-01770
2005-08-012200
2005-09-015730
2005-10-0166230
2005-11-01250

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).

Siehe auch