- Kategorien:
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> )
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 Sie2
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, mit00: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;
+---------------+---------------------+
| 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;
+---------------+----------------------+
| 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');
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;
+---------------+---------------------+-------------------------+--------------------------+
| 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;
+---------------------+
| 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;
+---------------------+
| DATE_PLUS_ONE_MONTH |
|---------------------|
| 2023-03-28 |
+---------------------+