- 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¶
Datum_oder_Zeit_Teil
: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 Zeitabschnitte aufgeführten Werte sein.Wert
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.
Datum_oder_Zeit_Ausdruck
Datum_oder_Zeit_Ausdruck
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
Datum_oder_Zeit_Teil
mit der Einheit Stunden oder kleiner angegeben sein, nicht Tagen oder größer.Wenn der Eingabedatentyp DATE ist und
Datum_oder_Zeit_Teil
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 Datum_oder_Zeit_Ausdruck
eine Uhrzeit ist:
Der Rückgabedatentyp ist eine Uhrzeit.
Wenn Datum_oder_Zeit_Ausdruck
ein Zeitstempel ist:
Der Rückgabedatentyp ist ein Zeitstempel.
Wenn Datum_oder_Zeit_Ausdruck
ein Datum ist:
Wenn
Datum_oder_Zeit_Teil
größer gleichday
ist (z. B.month
,year
), gibt die Funktion einen DATE-Wert zurück.Wenn
Datum_oder_Zeit_Teil
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
Datum_oder_Zeit_Teil
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. Wenn heute beispielsweise der 31. Januar wäre, sollte bei Hinzufügen eines Monats NOT 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 | +------------+