Zeitstempel mit Zeitzone-Funktionen
Dieser Abschnitt beschreibt Funktionen und Operatoren zum Untersuchen und Manipulieren von TIMESTAMP WITH TIME ZONE
(oder TIMESTAMPTZ)-Werten. Siehe auch die verwandten TIMESTAMP-Funktionen.
Die Zeitzonenunterstützung wird von der eingebauten ICU-Erweiterung bereitgestellt.
In den Beispielen unten wird angenommen, dass die aktuelle Zeitzone America/Los_Angeles
mit dem gregorianischen Kalender ist.
Eingebaute Zeitstempel-mit-Zeitzone-Funktionen
Die folgende Tabelle zeigt die verfügbaren skalaren Funktionen für TIMESTAMPTZ-Werte.
Da diese Funktionen weder Binning noch Anzeige betreffen,
sind sie immer verfügbar.
| Name | Beschreibung |
|---|---|
current_timestamp |
Aktuelles Datum und Uhrzeit (Beginn der aktuellen Transaktion). |
get_current_timestamp() |
Aktuelles Datum und Uhrzeit (Beginn der aktuellen Transaktion). |
greatest(timestamptz, timestamptz) |
Der spätere der beiden Zeitstempel. |
isfinite(timestamptz) |
Gibt true zurück, wenn der Zeitstempel mit Zeitzone endlich ist, sonst false. |
isinf(timestamptz) |
Gibt true zurück, wenn der Zeitstempel mit Zeitzone unendlich ist, sonst false. |
least(timestamptz, timestamptz) |
Der frühere der beiden Zeitstempel. |
now() |
Aktuelles Datum und Uhrzeit (Beginn der aktuellen Transaktion). |
timetz_byte_comparable(timetz) |
Wandelt ein TIME WITH TIME ZONE in einen UBIGINT-Sortierschlüssel um. |
to_timestamp(double) |
Wandelt Sekunden seit der Epoche in einen Zeitstempel mit Zeitzone um. |
transaction_timestamp() |
Aktuelles Datum und Uhrzeit (Beginn der aktuellen Transaktion). |
current_timestamp
| Beschreibung | Aktuelles Datum und Uhrzeit (Beginn der aktuellen Transaktion). |
| Beispiel | current_timestamp |
| Ergebnis | 2022-10-08 12:44:46.122-07 |
get_current_timestamp()
| Beschreibung | Aktuelles Datum und Uhrzeit (Beginn der aktuellen Transaktion). |
| Beispiel | get_current_timestamp() |
| Ergebnis | 2022-10-08 12:44:46.122-07 |
greatest(timestamptz, timestamptz)
| Beschreibung | Der spätere der beiden Zeitstempel. |
| Beispiel | greatest(TIMESTAMPTZ '1992-09-20 20:38:48', TIMESTAMPTZ '1992-03-22 01:02:03.1234') |
| Ergebnis | 1992-09-20 20:38:48-07 |
isfinite(timestamptz)
| Beschreibung | Gibt true zurück, wenn der Zeitstempel mit Zeitzone endlich ist, sonst false. |
| Beispiel | isfinite(TIMESTAMPTZ '1992-03-07') |
| Ergebnis | true |
isinf(timestamptz)
| Beschreibung | Gibt true zurück, wenn der Zeitstempel mit Zeitzone unendlich ist, sonst false. |
| Beispiel | isinf(TIMESTAMPTZ '-infinity') |
| Ergebnis | true |
least(timestamptz, timestamptz)
| Beschreibung | Der frühere der beiden Zeitstempel. |
| Beispiel | least(TIMESTAMPTZ '1992-09-20 20:38:48', TIMESTAMPTZ '1992-03-22 01:02:03.1234') |
| Ergebnis | 1992-03-22 01:02:03.1234-08 |
now()
| Beschreibung | Aktuelles Datum und Uhrzeit (Beginn der aktuellen Transaktion). |
| Beispiel | now() |
| Ergebnis | 2022-10-08 12:44:46.122-07 |
timetz_byte_comparable(timetz)
| Beschreibung | Wandelt ein TIME WITH TIME ZONE in einen UBIGINT-Sortierschlüssel um. |
| Beispiel | timetz_byte_comparable('18:18:16.21-07:00'::TIMETZ) |
| Ergebnis | 2494691656335442799 |
to_timestamp(double)
| Beschreibung | Wandelt Sekunden seit der Epoche in einen Zeitstempel mit Zeitzone um. |
| Beispiel | to_timestamp(1284352323.5) |
| Ergebnis | 2010-09-13 04:32:03.5+00 |
transaction_timestamp()
| Beschreibung | Aktuelles Datum und Uhrzeit (Beginn der aktuellen Transaktion). |
| Beispiel | transaction_timestamp() |
| Ergebnis | 2022-10-08 12:44:46.122-07 |
Zeichenketten für Zeitstempel mit Zeitzone
Ohne geladene Zeitzonen-Erweiterung werden TIMESTAMPTZ-Werte mit Offset-Notation
in Zeichenketten und aus Zeichenketten umgewandelt.
So können Sie einen Zeitpunkt korrekt angeben, ohne Zugriff auf Zeitzoneninformationen.
Der Portabilität wegen werden TIMESTAMPTZ-Werte immer mit GMT-Offsets angezeigt:
SELECT '2022-10-08 13:13:34-07'::TIMESTAMPTZ;2022-10-08 20:13:34+00Ist eine Zeitzonen-Erweiterung wie ICU geladen, kann eine Zeitzone aus einer Zeichenkette geparst und in eine Darstellung in der lokalen Zeitzone umgewandelt werden:
SELECT '2022-10-08 13:13:34 Europe/Amsterdam'::TIMESTAMPTZ::VARCHAR;2022-10-08 04:13:34-07 -- the offset will differ based on your local time zoneICU-Operatoren für Zeitstempel mit Zeitzone
Die folgende Tabelle zeigt die verfügbaren mathematischen Operatoren für TIMESTAMP WITH TIME ZONE-Werte,
die die ICU-Erweiterung bereitstellt.
| Operator | Beschreibung | Beispiel | Ergebnis |
|---|---|---|---|
+ |
Addition eines INTERVAL |
TIMESTAMPTZ '1992-03-22 01:02:03' + INTERVAL 5 DAY |
1992-03-27 01:02:03 |
- |
Subtraktion von TIMESTAMPTZs |
TIMESTAMPTZ '1992-03-27' - TIMESTAMPTZ '1992-03-22' |
5 days |
- |
Subtraktion eines INTERVAL |
TIMESTAMPTZ '1992-03-27 01:02:03' - INTERVAL 5 DAY |
1992-03-22 01:02:03 |
Addition zu oder Subtraktion von unendlichen Werten liefert denselben unendlichen Wert.
Addition und Subtraktion von Intervallen verwendet die ICU-Calendar-add-Funktion. Bei positiven Intervallen (vorwärts in der Zeit) werden die Felder vom wenigsten zum bedeutendsten erhöht. Bei negativen Intervallen (rückwärts in der Zeit) werden die Felder vom bedeutendsten zum wenigsten verringert. Das liefert dieselben Ergebnisse wie Postgres, entspricht aber nicht einigen neueren Kalender-RFCs.
ICU-Funktionen für Zeitstempel mit Zeitzone
Die folgende Tabelle zeigt die von ICU bereitgestellten skalaren Funktionen für TIMESTAMP WITH TIME ZONE-Werte.
| Name | Beschreibung |
|---|---|
age(timestamptz, timestamptz) |
Subtrahiert die Argumente und liefert die Zeitdifferenz zwischen den beiden Zeitstempeln. |
age(timestamptz) |
Subtrahiert vom current_date. |
date_diff(part, starttimestamptz, endtimestamptz) |
Die Anzahl der part-Grenzen zwischen starttimestamptz und endtimestamptz, einschließlich des größeren und ausschließlich des kleineren Zeitstempels. |
date_part([part, ...], timestamp) |
Holt die aufgeführten Teilfelder als struct. Die Liste muss konstant sein. |
date_part(part, timestamp) |
Teilfeld holen (entspricht extract). |
date_sub(part, starttimestamptz, endtimestamptz) |
Die vorzeichenbehaftete Länge des Intervalls zwischen starttimestamptz und endtimestamptz, auf ganze Vielfache von part gekürzt. |
date_trunc(part, timestamptz) |
Auf die angegebene Genauigkeit kürzen. |
epoch_ns(timestamptz) |
Wandelt einen timestamptz in Nanosekunden seit der Epoche um. |
epoch_us(timestamptz) |
Wandelt einen timestamptz in Mikrosekunden seit der Epoche um. |
extract(field FROM timestamptz) |
Teilfeld aus einem TIMESTAMP WITH TIME ZONE holen. |
last_day(timestamptz) |
Der letzte Tag des Monats. |
make_timestamptz(bigint, bigint, bigint, bigint, bigint, double, string) |
Der TIMESTAMP WITH TIME ZONE für die angegebenen Teile und die Zeitzone. |
make_timestamptz(bigint, bigint, bigint, bigint, bigint, double) |
Der TIMESTAMP WITH TIME ZONE für die angegebenen Teile in der aktuellen Zeitzone. |
make_timestamptz(microseconds) |
Der TIMESTAMP WITH TIME ZONE für die angegebenen µs seit der Epoche. |
strftime(timestamptz, format) |
Wandelt einen TIMESTAMP WITH TIME ZONE-Wert gemäß dem Formatstring in eine Zeichenkette um. |
strptime(text, format) |
Wandelt eine Zeichenkette gemäß dem Formatstring in TIMESTAMP WITH TIME ZONE um, wenn %Z angegeben ist. |
time_bucket(bucket_width, timestamptz[, offset]) |
Kürzt timestamptz auf ein Raster der Breite bucket_width. Das Raster ist bei 2000-01-01 00:00:00+00:00[ + offset] verankert, wenn bucket_width eine Anzahl von Monaten oder gröberen Einheiten ist, sonst bei 2000-01-03 00:00:00+00:00[ + offset]. Beachten Sie, dass 2000-01-03 ein Montag ist. |
time_bucket(bucket_width, timestamptz[, origin]) |
Kürzt timestamptz auf ein Raster der Breite bucket_width. Das Raster ist am Zeitstempel origin verankert, der standardmäßig 2000-01-01 00:00:00+00:00 ist, wenn bucket_width eine Anzahl von Monaten oder gröberen Einheiten ist, sonst 2000-01-03 00:00:00+00:00. Beachten Sie, dass 2000-01-03 ein Montag ist. |
time_bucket(bucket_width, timestamptz[, timezone]) |
Kürzt timestamptz auf ein Raster der Breite bucket_width. Das Raster ist am Zeitstempel origin verankert, der standardmäßig 2000-01-01 00:00:00 in der angegebenen timezone ist, wenn bucket_width eine Anzahl von Monaten oder gröberen Einheiten ist, sonst 2000-01-03 00:00:00 in der angegebenen timezone. Die Standardzeitzone ist 'UTC'. Beachten Sie, dass 2000-01-03 ein Montag ist. |
age(timestamptz, timestamptz)
| Beschreibung | Subtrahiert die Argumente und liefert die Zeitdifferenz zwischen den beiden Zeitstempeln. |
| Beispiel | age(TIMESTAMPTZ '2001-04-10', TIMESTAMPTZ '1992-09-20') |
| Ergebnis | 8 years 6 months 20 days |
age(timestamptz)
| Beschreibung | Subtrahiert vom current_date. |
| Beispiel | age(TIMESTAMP '1992-09-20') |
| Ergebnis | 29 years 1 month 27 days 12:39:00.844 |
date_diff(part, starttimestamptz, endtimestamptz)
| Beschreibung | Die vorzeichenbehaftete Anzahl der part-Grenzen zwischen starttimestamptz und endtimestamptz, einschließlich des größeren und ausschließlich des kleineren Zeitstempels. |
| Beispiel | date_diff('hour', TIMESTAMPTZ '1992-09-30 23:59:59', TIMESTAMPTZ '1992-10-01 01:58:00') |
| Ergebnis | 2 |
date_part([part, ...], timestamptz)
| Beschreibung | Holt die aufgeführten Teilfelder als struct. Die Liste muss konstant sein. |
| Beispiel | date_part(['year', 'month', 'day'], TIMESTAMPTZ '1992-09-20 20:38:40-07') |
| Ergebnis | {year: 1992, month: 9, day: 20} |
date_part(part, timestamptz)
| Beschreibung | Teilfeld holen (entspricht extract). |
| Beispiel | date_part('minute', TIMESTAMPTZ '1992-09-20 20:38:40') |
| Ergebnis | 38 |
date_sub(part, starttimestamptz, endtimestamptz)
| Beschreibung | Die vorzeichenbehaftete Länge des Intervalls zwischen starttimestamptz und endtimestamptz, auf ganze Vielfache von part gekürzt. |
| Beispiel | date_sub('hour', TIMESTAMPTZ '1992-09-30 23:59:59', TIMESTAMPTZ '1992-10-01 01:58:00') |
| Ergebnis | 1 |
date_trunc(part, timestamptz)
| Beschreibung | Auf die angegebene Genauigkeit kürzen. |
| Beispiel | date_trunc('hour', TIMESTAMPTZ '1992-09-20 20:38:40') |
| Ergebnis | 1992-09-20 20:00:00 |
epoch_ns(timestamptz)
| Beschreibung | Wandelt einen timestamptz in Nanosekunden seit der Epoche um. |
| Beispiel | epoch_ns('2022-11-07 08:43:04.123456+00'::TIMESTAMPTZ); |
| Ergebnis | 1667810584123456000 |
epoch_us(timestamptz)
| Beschreibung | Wandelt einen timestamptz in Mikrosekunden seit der Epoche um. |
| Beispiel | epoch_us('2022-11-07 08:43:04.123456+00'::TIMESTAMPTZ); |
| Ergebnis | 1667810584123456 |
extract(field FROM timestamptz)
| Beschreibung | Teilfeld aus einem TIMESTAMP WITH TIME ZONE holen. |
| Beispiel | extract('hour' FROM TIMESTAMPTZ '1992-09-20 20:38:48') |
| Ergebnis | 20 |
last_day(timestamptz)
| Beschreibung | Der letzte Tag des Monats. |
| Beispiel | last_day(TIMESTAMPTZ '1992-03-22 01:02:03.1234') |
| Ergebnis | 1992-03-31 |
make_timestamptz(bigint, bigint, bigint, bigint, bigint, double, string)
| Beschreibung | Der TIMESTAMP WITH TIME ZONE für die angegebenen Teile und die Zeitzone. |
| Beispiel | make_timestamptz(1992, 9, 20, 15, 34, 27.123456, 'CET') |
| Ergebnis | 1992-09-20 06:34:27.123456-07 |
make_timestamptz(bigint, bigint, bigint, bigint, bigint, double)
| Beschreibung | Der TIMESTAMP WITH TIME ZONE für die angegebenen Teile in der aktuellen Zeitzone. |
| Beispiel | make_timestamptz(1992, 9, 20, 13, 34, 27.123456) |
| Ergebnis | 1992-09-20 13:34:27.123456-07 |
make_timestamptz(microseconds)
| Beschreibung | Der TIMESTAMP WITH TIME ZONE für die angegebenen µs seit der Epoche. |
| Beispiel | make_timestamptz(1667810584123456) |
| Ergebnis | 2022-11-07 16:43:04.123456-08 |
strftime(timestamptz, format)
| Beschreibung | Wandelt einen TIMESTAMP WITH TIME ZONE-Wert gemäß dem Formatstring in eine Zeichenkette um. |
| Beispiel | strftime(timestamptz '1992-01-01 20:38:40', '%a, %-d %B %Y - %I:%M:%S %p') |
| Ergebnis | Wed, 1 January 1992 - 08:38:40 PM |
strptime(text, format)
| Beschreibung | Wandelt eine Zeichenkette gemäß dem Formatstring in TIMESTAMP WITH TIME ZONE um, wenn %Z angegeben ist. |
| Beispiel | strptime('Wed, 1 January 1992 - 08:38:40 PST', '%a, %-d %B %Y - %H:%M:%S %Z') |
| Ergebnis | 1992-01-01 08:38:40-08 |
time_bucket(bucket_width, timestamptz[, offset])
| Beschreibung | Kürzt timestamptz auf ein Raster der Breite bucket_width. Das Raster ist bei 2000-01-01 00:00:00+00:00[ + offset] verankert, wenn bucket_width eine Anzahl von Monaten oder gröberen Einheiten ist, sonst bei 2000-01-03 00:00:00+00:00[ + offset]. Beachten Sie, dass 2000-01-03 ein Montag ist. |
| Beispiel | time_bucket(INTERVAL '10 minutes', TIMESTAMPTZ '1992-04-20 15:26:00-07', INTERVAL '5 minutes') |
| Ergebnis | 1992-04-20 15:25:00-07 |
time_bucket(bucket_width, timestamptz[, origin])
| Beschreibung | Kürzt timestamptz auf ein Raster der Breite bucket_width. Das Raster ist am Zeitstempel origin verankert, der standardmäßig 2000-01-01 00:00:00+00:00 ist, wenn bucket_width eine Anzahl von Monaten oder gröberen Einheiten ist, sonst 2000-01-03 00:00:00+00:00. Beachten Sie, dass 2000-01-03 ein Montag ist. |
| Beispiel | time_bucket(INTERVAL '2 weeks', TIMESTAMPTZ '1992-04-20 15:26:00-07', TIMESTAMPTZ '1992-04-01 00:00:00-07') |
| Ergebnis | 1992-04-15 00:00:00-07 |
time_bucket(bucket_width, timestamptz[, timezone])
| Beschreibung | Kürzt timestamptz auf ein Raster der Breite bucket_width. Das Raster ist am Zeitstempel origin verankert, der standardmäßig 2000-01-01 00:00:00 in der angegebenen timezone ist, wenn bucket_width eine Anzahl von Monaten oder gröberen Einheiten ist, sonst 2000-01-03 00:00:00 in der angegebenen timezone. Die Standardzeitzone ist 'UTC'. Beachten Sie, dass 2000-01-03 ein Montag ist. |
| Beispiel | time_bucket(INTERVAL '2 days', TIMESTAMPTZ '1992-04-20 15:26:00-07', 'Europe/Berlin') |
| Ergebnis | 1992-04-19 15:00:00-07 (=1992-04-20 00:00:00 Europe/Berlin) |
Es gibt außerdem eigene Extraktionsfunktionen für die Teilfelder.
ICU-Zeitstempel-Tabellenfunktionen
Die folgende Tabelle zeigt die verfügbaren Tabellenfunktionen für den Typ TIMESTAMP WITH TIME ZONE.
| Name | Beschreibung |
|---|---|
generate_series(timestamptz, timestamptz, interval) |
Erzeugt eine Tabelle von Zeitstempeln im geschlossenen Bereich (einschließlich Start- und Endzeitstempel), in Schritten des Intervalls. |
range(timestamptz, timestamptz, interval) |
Erzeugt eine Tabelle von Zeitstempeln im halboffenen Bereich (einschließlich Startzeitstempel, aber vor dem Endzeitstempel stoppend), in Schritten des Intervalls. |
Unendliche Werte sind als Grenzen von Tabellenfunktionen nicht erlaubt.
generate_series(timestamptz, timestamptz, interval)
| Beschreibung | Erzeugt eine Tabelle von Zeitstempeln im geschlossenen Bereich (einschließlich Start- und Endzeitstempel), in Schritten des Intervalls. |
| Beispiel | generate_series(TIMESTAMPTZ '2001-04-10', TIMESTAMPTZ '2001-04-11', INTERVAL 30 MINUTE) |
range(timestamptz, timestamptz, interval)
| Beschreibung | Erzeugt eine Tabelle von Zeitstempeln im halboffenen Bereich (einschließlich Startzeitstempel, aber vor dem Endzeitstempel stoppend), in Schritten des Intervalls. |
| Beispiel | range(TIMESTAMPTZ '2001-04-10', TIMESTAMPTZ '2001-04-11', INTERVAL 30 MINUTE) |
ICU-Funktionen für Zeitstempel ohne Zeitzone
Die folgende Tabelle zeigt die von ICU bereitgestellten skalaren Funktionen, die auf gewöhnlichen TIMESTAMP-Werten arbeiten.
Diese Funktionen gehen davon aus, dass der TIMESTAMP ein „lokaler Zeitstempel“ ist.
Ein lokaler Zeitstempel ist im Wesentlichen eine Möglichkeit, die Teilwerte aus einer Zeitzone in einem einzelnen Wert zu kodieren.
Sie sollten mit Vorsicht verwendet werden, weil die erzeugten Werte durch die Sommerzeit Lücken und Mehrdeutigkeiten enthalten können.
Oft lässt sich dieselbe Funktionalität zuverlässiger mit der struct-Variante der Funktion date_part umsetzen.
| Name | Beschreibung |
|---|---|
current_localtime() |
Gibt ein TIME zurück, dessen GMT-Bin-Werte der lokalen Uhrzeit in der aktuellen Zeitzone entsprechen. |
current_localtimestamp() |
Gibt ein TIMESTAMP zurück, dessen GMT-Bin-Werte dem lokalen Datum und der lokalen Uhrzeit in der aktuellen Zeitzone entsprechen. |
localtime |
Synonym für den Funktionsaufruf current_localtime(). |
localtimestamp |
Synonym für den Funktionsaufruf current_localtimestamp(). |
timezone(text, timestamp) |
Verwendet die Datumsteile des Zeitstempels in GMT, um einen Zeitstempel in der angegebenen Zeitzone zu konstruieren. Das Argument ist faktisch eine „lokale“ Zeit. |
timezone(text, timestamptz) |
Verwendet die Datumsteile des Zeitstempels in der angegebenen Zeitzone, um einen Zeitstempel zu konstruieren. Das Ergebnis ist faktisch eine „lokale“ Zeit. |
current_localtime()
| Beschreibung | Gibt ein TIME zurück, dessen GMT-Bin-Werte der lokalen Uhrzeit in der aktuellen Zeitzone entsprechen. |
| Beispiel | current_localtime() |
| Ergebnis | 08:47:56.497 |
current_localtimestamp()
| Beschreibung | Gibt ein TIMESTAMP zurück, dessen GMT-Bin-Werte dem lokalen Datum und der lokalen Uhrzeit in der aktuellen Zeitzone entsprechen. |
| Beispiel | current_localtimestamp() |
| Ergebnis | 2022-12-17 08:47:56.497 |
localtime
| Beschreibung | Synonym für den Funktionsaufruf current_localtime(). |
| Beispiel | localtime |
| Ergebnis | 08:47:56.497 |
localtimestamp
| Beschreibung | Synonym für den Funktionsaufruf current_localtimestamp(). |
| Beispiel | localtimestamp |
| Ergebnis | 2022-12-17 08:47:56.497 |
timezone(text, timestamp)
| Beschreibung | Verwendet die Datumsteile des Zeitstempels in GMT, um einen Zeitstempel in der angegebenen Zeitzone zu konstruieren. Das Argument ist faktisch eine „lokale“ Zeit. |
| Beispiel | timezone('America/Denver', TIMESTAMP '2001-02-16 20:38:40') |
| Ergebnis | 2001-02-16 19:38:40-08 |
timezone(text, timestamptz)
| Beschreibung | Verwendet die Datumsteile des Zeitstempels in der angegebenen Zeitzone, um einen Zeitstempel zu konstruieren. Das Ergebnis ist faktisch eine „lokale“ Zeit. |
| Beispiel | timezone('America/Denver', TIMESTAMPTZ '2001-02-16 20:38:40-05') |
| Ergebnis | 2001-02-16 18:38:40 |
At Time Zone
Die Syntax AT TIME ZONE ist syntaktischer Zucker für die oben aufgeführte (zweiargumentige) Funktion timezone:
SELECT TIMESTAMP '2001-02-16 20:38:40' AT TIME ZONE 'America/Denver' AS ts;2001-02-16 19:38:40-08SELECT TIMESTAMP WITH TIME ZONE '2001-02-16 20:38:40-05' AT TIME ZONE 'America/Denver' AS ts;2001-02-16 18:38:40Beachten Sie, dass numerische Zeitzonen nicht erlaubt sind:
SELECT TIMESTAMP '2001-02-16 20:38:40-05' AT TIME ZONE '0200' AS ts;Not implemented Error: Unknown TimeZone '0200'Unendlichkeiten
Auf unendliche Daten angewendete Funktionen geben entweder dieselben unendlichen Daten
zurück (z. B. greatest) oder NULL (z. B. date_part), je nachdem, was „Sinn ergibt“.
Muss die Funktion die Teile des unendlichen temporalen Werts untersuchen,
ist das Ergebnis in der Regel NULL.
Kalender
Die ICU-Erweiterung unterstützt außerdem nicht-gregorianische Kalender. Ist ein solcher Kalender aktuell, verwenden Anzeige- und Binning-Operationen diesen Kalender.
Sommerzeitübergänge (DST)
Beim Addieren von Kalenderintervallen wie INTERVAL '1 day' zu einem
TIMESTAMPTZ kann der resultierende lokale Zeitstempel auf eine
nicht existierende Zeit während der Sommerzeitübergänge fallen.
DuckDB folgt dem Verhalten von PostgreSQL und verschiebt das Ergebnis vorwärts auf den nächsten gültigen Zeitstempel.
Beispiel:
SET timezone = 'Europe/Amsterdam';
SELECT TIMESTAMPTZ '2025-03-29 02:30:00+01' + INTERVAL '1 day';2025-03-30 03:30:00+02