Kategorien:

Datums- und Uhrzeitfunktionen

TIMEADD

Fügt den angegebenen Wert für die angegebene Datums- oder Uhrzeitkomponente zu einem Datum, einer Uhrzeit oder einem Zeitstempel hinzu.

Alias für DATEADD.

Syntax

TIMEADD( <date_or_time_part> , <value> , <date_or_time_expr> )
Copy

Argumente

date_or_time_part

Hiermit wird die Einheit für die Uhrzeit angegeben, die Sie hinzufügen möchten. Wenn Sie zum Beispiel zwei Tage hinzufügen möchten, geben Sie day an. Diese Einheit muss einer der unter Unterstützte Datums- und Uhrzeitkomponenten aufgeführten Werte sein.

value

Dies ist die Anzahl der Zeiteinheiten, die Sie hinzufügen möchten. Wenn die Zeiteinheit zum Beispiel day lautet und Sie zwei Tage hinzufügen möchten, geben Sie 2 an. Wenn Sie zwei Tage subtrahieren möchten, geben Sie -2 an.

date_or_time_expr

date_or_time_expr muss auf ein Datum, eine Uhrzeit oder einen Zeitstempel ergeben. Dies ist das Datum, die Uhrzeit oder der Zeitstempel, dem bzw. der Sie hinzufügen möchten. Wenn Sie zum Beispiel zwei Tage zum 1. August 2024 hinzufügen möchten, geben Sie '2024-08-01'::DATE an.

Wenn der Datentyp TIME ist, muss date_or_time_part mit der Einheit Stunden oder kleiner angegeben sein, nicht Tagen oder größer.

Wenn der Eingabedatentyp DATE ist und date_or_time_part Stunden oder kleiner ist, wird der Eingabewert nicht abgelehnt, sondern als TIMESTAMP mit Stunden, Minuten, Sekunden und Bruchteile einer Sekunde behandelt, die anfänglich auf 0 gesetzt werden (z. B. Mitternacht am angegebenen Datum).

Rückgabewerte

Wenn date_or_time_expr eine Uhr ist, dann ist der zurückgegebene Datentyp eine Uhrzeit.

Wenn date_or_time_expr ein Zeitstempel ist, dann ist der zurückgegebene Datentyp ein Zeitstempel.

Wenn date_or_time_expr ein Datum ist:

  • Wenn date_or_time_part day oder größer ist (z. B. month, year), gibt die Funktion einen DATE-Wert zurück.

  • Wenn date_or_time_part kleiner als ein Tag ist (z. B. hour, minute, second), gibt die Funktion den Wert TIMESTAMP_NTZ zurück, mit 00:00:00.000 als Startzeit für das Datum.

Nutzungshinweise

Wenn date_or_time_part year, quarter oder month (oder eine Variante) ist und der resultierende Monat weniger Tage hat als der ursprüngliche Tag des Monats, kann der resultierende Tag des Monats vom ursprünglichen Tag abweichen.

Beispiele

Hinzufügen von Jahren zu einem Datum:

SELECT TO_DATE('2022-05-08') AS original_date,
       DATEADD(year, 2, TO_DATE('2022-05-08')) AS date_plus_two_years;
Copy
+---------------+---------------------+
| ORIGINAL_DATE | DATE_PLUS_TWO_YEARS |
|---------------+---------------------|
| 2022-05-08    | 2024-05-08          |
+---------------+---------------------+

Subtrahiert Jahre von einem Datum:

SELECT TO_DATE('2022-05-08') AS original_date,
       DATEADD(year, -2, TO_DATE('2022-05-08')) AS date_minus_two_years;
Copy
+---------------+----------------------+
| ORIGINAL_DATE | DATE_MINUS_TWO_YEARS |
|---------------+----------------------|
| 2022-05-08    | 2020-05-08           |
+---------------+----------------------+

Fügen Sie einem Datum zwei Jahre und zwei Stunden hinzu. Legen Sie zunächst das Format für die Zeitstempelausgabe fest, erstellen Sie eine Tabelle und fügen Sie Daten ein:

ALTER SESSION SET TIMESTAMP_OUTPUT_FORMAT = 'YYYY-MM-DD HH24:MI:SS.FF9';
CREATE TABLE datetest (d date);
INSERT INTO datetest VALUES ('2022-04-05');
Copy

Führen Sie eine Abfrage aus, die zwei Jahre und zwei Stunden zu einem Datum hinzufügt:

SELECT d AS original_date,
       DATEADD(year, 2, d) AS date_plus_two_years,
       TO_TIMESTAMP(d) AS original_timestamp,
       DATEADD(hour, 2, d) AS timestamp_plus_two_hours
  FROM datetest;
Copy
+---------------+---------------------+-------------------------+--------------------------+
| ORIGINAL_DATE | DATE_PLUS_TWO_YEARS | ORIGINAL_TIMESTAMP      | TIMESTAMP_PLUS_TWO_HOURS |
|---------------+---------------------+-------------------------+--------------------------|
| 2022-04-05    | 2024-04-05          | 2022-04-05 00:00:00.000 | 2022-04-05 02:00:00.000  |
+---------------+---------------------+-------------------------+--------------------------+

Hinzufügen eines Monats zu einem Datum in einem Monat mit gleich vielen oder mehr Tagen als der resultierende Monat. Wenn das Datum beispielsweise der 31. Januar ist, sollte das Hinzufügen eines Monats nicht den 31. Februar ergeben.

SELECT DATEADD(month, 1, '2023-01-31'::DATE) AS date_plus_one_month;
Copy
+---------------------+
| DATE_PLUS_ONE_MONTH |
|---------------------|
| 2023-02-28          |
+---------------------+

Hinzufügen eines Monats zu einem Datum in einem Monat mit weniger Tagen als der resultierende Monat. Das Hinzufügen eines Monats zum 28. Februar ergibt den 28. März.

SELECT DATEADD(month, 1, '2023-02-28'::DATE) AS date_plus_one_month;
Copy
+---------------------+
| DATE_PLUS_ONE_MONTH |
|---------------------|
| 2023-03-28          |
+---------------------+