- 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¶
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 unter 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, ist der Wert 2.
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
Teil_von_Datum/Uhrzeit
mit der Einheit Stunden oder kleiner angegeben sein, nicht Tagen oder größer.Wenn der Eingabedatentyp DATE ist und
Teil_von_Datum/Uhrzeit
Stunden oder kleiner ist, wird der Eingabewert nicht abgelehnt, sondern als TIMESTAMP mit Stunden, Minuten, Sekunden und Sekundenbruchteilen behandelt, die anfänglich auf 0 gesetzt wurden (z. B. Mitternacht des angegebenen Datums).
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
Teil_von_Datum/Uhrzeit
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 | +------------+