- Kategorien:
DATEADD¶
Fügt den angegebenen Wert für die angegebene Datums- oder Uhrzeitkomponente zu einem Datum, einer Uhrzeit oder einem Zeitstempel hinzu.
- Aliasse:
- Siehe auch:
Syntax¶
DATEADD( <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 beispielsweise 2 Tage hinzufügen möchten, lautet die Einheit
DAY
. Diese Einheit muss einer der in Unterstützte Datums- und Uhrzeitkomponenten aufgeführten Werte sein.value
Dies ist die Anzahl der Zeiteinheiten, die Sie hinzufügen möchten. Wenn Sie beispielsweise 2 Tage hinzufügen möchten, muss der Wert 2 lauten.
date_or_time_expr
date_or_time_expr
muss 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 dem 1. August 2018 zwei Tage hinzufügen möchten, muss der Wert'2018-08-01'::DATE
lauten.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 wurden (z. B. Mitternacht am angegebenen Datum).
Rückgabewerte¶
Wenn date_or_time_expr
eine Uhrzeit ist:
Der Rückgabedatentyp ist eine Uhrzeit.
Wenn date_or_time_expr
ein Zeitstempel ist:
Der Rückgabedatentyp ist ein Zeitstempel.
Wenn date_or_time_expr
ein Datum ist:
Wenn
date_or_time_part
größer gleichday
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 für das Datum einen TIMESTAMP_NTZ-Wert mit der Startzeit 00:00:00,000 zurück.
Nutzungshinweise¶
Wenn
date_or_time_part
year
,quarter
odermonth
(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('2013-05-08') AS v1, DATEADD(year, 2, TO_DATE('2013-05-08')) AS v;Ausgabe:
+------------+------------+ | V1 | V | |------------+------------| | 2013-05-08 | 2015-05-08 | +------------+------------+
Hinzufügen von 2 Jahren und 2 Stunden zu einem Datum:
Ursprüngliche Einrichtung dieses Beispiels und daraus folgende Beispiele:
ALTER SESSION SET TIMESTAMP_OUTPUT_FORMAT = 'YYYY-MM-DD HH24:MI:SS.FF9'; CREATE TABLE datetest (d date); INSERT INTO datetest VALUES ('2013-04-05');Abfragen zum Hinzufügen von 2 Jahren und 2 Stunden zu einem Datum:
SELECT d AS "DATE", dateadd(year, 2, d) AS add_2_years, dateadd(hour, 2, d) AS add_2_hours FROM datetest;Ausgabe:
+------------+-------------+-------------------------+ | DATE | ADD_2_YEARS | ADD_2_HOURS | |------------+-------------+-------------------------| | 2013-04-05 | 2015-04-05 | 2013-04-05 02:00:00.000 | +------------+-------------+-------------------------+
Hinzufügen von Stunden zu einem Zeitstempel:
SELECT TO_TIMESTAMP_LTZ('2013-05-08 11:22:33.444') AS v1, DATEADD(HOUR, 2, TO_TIMESTAMP_LTZ('2013-05-08 11:22:33.444')) AS v;Ausgabe:
+-------------------------------+-------------------------------+ | V1 | V | |-------------------------------+-------------------------------| | 2013-05-08 11:22:33.444000000 | 2013-05-08 13:22:33.444000000 | +-------------------------------+-------------------------------+
Hinzufügen eines Monats zu einem Datum in einem Monat mit gleich vielen oder mehr Tagen als der resultierende Monat. Beispiel: Wenn heute der 31. Januar wäre, sollte bei Hinzufügen eines Monats nicht der „31. Februar“ zurückgegeben werden.
SELECT DATEADD(MONTH, 1, '2000-01-31'::DATE) AS DIFFERENT_DAY;Ausgabe:
+---------------+ | DIFFERENT_DAY | |---------------| | 2000-02-29 | +---------------+
Hinzufügen eines Monats zu einem Datum in einem Monat mit weniger Tagen als der resultierende Monat. Durch Hinzufügen eines Monats zum 29. Februar sollte sich der 29. März ergeben, was sicher ist.
SELECT DATEADD(MONTH, 1, '2000-02-29'::DATE) AS RESULT;Ausgabe:
+------------+ | RESULT | |------------| | 2000-03-29 | +------------+