Funktion DATEADD - Amazon Redshift

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Funktion DATEADD

Erhöht einen DATE-, TIME-, TIMETZ- oder TIMESTAMP-Wert um ein bestimmtes Intervall.

Syntax

DATEADD( datepart, interval, {date|time|timetz|timestamp} )

Argumente

datepart

Der Datumsteil (z. B. Jahr, Monat, Tag oder Stunde), für den die Funktion gilt. Weitere Informationen finden Sie unter Datumsteile für Datums- oder Zeitstempelfunktionen.

Intervall

Eine Ganzzahl, di das Intervall angibt (z. B. eine Anzahl von Tagen), das dem Zielausdruck hinzugefügt werden soll. Bei einer negativen Ganzzahl wird das Intervall subtrahiert.

date|time|timetz|timestamp

Eine DATE-, TIME-, TIMETZ- oder TIMESTAMP-Spalte bzw. ein entsprechender Ausdruck, die/der implizit zu einem DATE, TIME, TIMETZ oder TIMESTAMP konvertiert wird. Der DATE-, TIME-, TIMETZ- oder TIMESTAMP-Ausdruck muss den angegebenen Datumsteil enthalten.

Rückgabetyp

TIMESTAMP oder TIME oder TIMEZ abhängig vom Eingabedatendatentyp.

Beispiele mit einer DATE-Spalte

Im folgenden Beispiel werden 30 Tage zu jedem Datum hinzugefügt, das in der DATE-Tabelle vorhanden ist.

select dateadd(day,30,caldate) as novplus30 from date where month='NOV' order by dateid; novplus30 --------------------- 2008-12-01 00:00:00 2008-12-02 00:00:00 2008-12-03 00:00:00 ... (30 rows)

Im folgenden Beispiel werden 18 Monate zu einem Literal-Datumswert hinzugefügt.

select dateadd(month,18,'2008-02-28'); date_add --------------------- 2009-08-28 00:00:00 (1 row)

Der Standard-Spaltenname für eine DATEADD-Funktion ist DATE_ADD. Der Standard-Zeitstempel für einen Datumswert ist 00:00:00.

Im folgenden Beispiel werden 30 Minuten zu einem Datumswert hinzugefügt, der keinen Zeitstempel angibt.

select dateadd(m,30,'2008-02-28'); date_add --------------------- 2008-02-28 00:30:00 (1 row)

Sie können Datumsteile ausschreiben oder abkürzen. In diesem Fall steht das m für Minuten, nicht für Monate.

Beispiele mit einer TIME-Spalte

Die folgende Beispieltabelle TIME_TEST enthält eine Spalte TIME_VAL (Typ TIME) mit drei eingefügten Werten.

select time_val from time_test; time_val --------------------- 20:00:00 00:00:00.5550 00:58:00

Im folgenden Beispiel werden jedem TIME_VAL in der TIME_TEST-Tabelle 5 Minuten hinzugefügt.

select dateadd(minute,5,time_val) as minplus5 from time_test; minplus5 --------------- 20:05:00 00:05:00.5550 01:03:00

Im folgenden Beispiel werden 8 Stunden zu einem Literal-Zeitwert hinzugefügt.

select dateadd(hour, 8, time '13:24:55'); date_add --------------- 21:24:55

Das folgende Beispiel wird angezeigt, wenn eine Zeit über 24:00:00 oder unter 00:00:00 liegt.

select dateadd(hour, 12, time '13:24:55'); date_add --------------- 01:24:55

Beispiele mit einer TIMETZ-Spalte

Die Ausgabewerte in diesen Beispielen sind in der Standardzeitzone UTC angegeben.

Die folgende Beispieltabelle TIMETZ_TEST enthält eine Spalte TIMETZ_VAL (Typ TIMETZ) mit drei eingefügten Werten.

select timetz_val from timetz_test; timetz_val ------------------ 04:00:00+00 00:00:00.5550+00 05:58:00+00

Im folgenden Beispiel werden jedem TIMETZ_VAL in der TIMETZ_TEST-Tabelle 5 Minuten hinzugefügt.

select dateadd(minute,5,timetz_val) as minplus5_tz from timetz_test; minplus5_tz --------------- 04:05:00+00 00:05:00.5550+00 06:03:00+00

Im folgenden Beispiel werden 2 Stunden zu einem Literal-Timetz-Wert hinzugefügt.

select dateadd(hour, 2, timetz '13:24:55 PST'); date_add --------------- 23:24:55+00

Beispiele mit einer TIMESTAMP-Spalte

Die Ausgabewerte in diesen Beispielen sind in der Standardzeitzone UTC angegeben.

Die folgende Beispieltabelle TIMESTAMP_TEST enthält eine Spalte TIMESTAMP_VAL (Typ TIMESTAMP) mit drei eingefügten Werten.

SELECT timestamp_val FROM timestamp_test; timestamp_val ------------------ 1988-05-15 10:23:31 2021-03-18 17:20:41 2023-06-02 18:11:12

Im folgenden Beispiel werden nur den TIMESTAMP_VAL-Werten in TIMESTAMP_TEST aus der Zeit vor dem Jahr 2000 20 Jahre hinzugefügt.

SELECT dateadd(year,20,timestamp_val) FROM timestamp_test WHERE timestamp_val < to_timestamp('2000-01-01 00:00:00', 'YYYY-MM-DD HH:MI:SS'); date_add --------------- 2008-05-15 10:23:31

Im folgenden Beispiel werden einem literalen Zeitstempelwert, der ohne Sekundenanzeige geschrieben wurde, 5 Sekunden hinzugefügt.

SELECT dateadd(second, 5, timestamp '2001-06-06'); date_add --------------- 2001-06-06 00:00:05

Nutzungshinweise

Die Funktionen DATEADD(month, ...) und ADD_MONTHS behandeln Daten am Ende von Monaten in unterschiedlicher Weise:

  • ADD_MONTHS: Wenn das Datum, das Sie hinzufügen, der letzte Tag des Monats ist, ist das Ergebnis immer der letzte Tag des Ergebnismonats, unabhängig von der Länge des Monats. Zum Beispiel: 30. April + 1 Monat = 31. Mai.

    select add_months('2008-04-30',1); add_months --------------------- 2008-05-31 00:00:00 (1 row)
  • DATEADD: Wenn das Datum, zu dem Sie hinzufügen, weniger Tage enthält als der Ergebnismonat, entspricht das Ergebnis dem Tag des Ergebnismonats, nicht dem letzten Tag des Monats. Zum Beispiel: 30. April + 1 Monat = 30. Mai.

    select dateadd(month,1,'2008-04-30'); date_add --------------------- 2008-05-30 00:00:00 (1 row)

Die Funktion DATEADD behandelt das Schaltjahrdatum 02-29 anders als DATEADD(month, 12, ...) oder DATEADD(year, 1, ...).

select dateadd(month,12,'2016-02-29'); date_add --------------------- 2017-02-28 00:00:00 select dateadd(year, 1, '2016-02-29'); date_add --------------------- 2017-03-01 00:00:00