- Kategorien:
TIMESTAMP_FROM_PARTS¶
Erstellt einen Zeitstempel aus einzelnen numerischen Komponenten. Wenn keine Zeitzone aktiv ist, kann mithilfe der Funktion aus einem Datums- und einem Zeitausdruck ein Zeitstempel erstellt werden.
- Aliasse:
TIMESTAMPFROMPARTS
- Varianten (und Aliasse):
TIMESTAMP_LTZ_FROM_PARTS , TIMESTAMPLTZFROMPARTS
TIMESTAMP_NTZ_FROM_PARTS , TIMESTAMPNTZFROMPARTS
TIMESTAMP_TZ_FROM_PARTS , TIMESTAMPTZFROMPARTS
Syntax¶
TIMESTAMP_FROM_PARTS( <year>, <month>, <day>, <hour>, <minute>, <second> [, <nanosecond> ] [, <time_zone> ] )
TIMESTAMP_FROM_PARTS( <date_expr>, <time_expr> )
TIMESTAMP_LTZ_FROM_PARTS( <year>, <month>, <day>, <hour>, <minute>, <second> [, <nanosecond>] )
TIMESTAMP_NTZ_FROM_PARTS( <year>, <month>, <day>, <hour>, <minute>, <second> [, <nanosecond>] )
TIMESTAMP_NTZ_FROM_PARTS( <date_expr>, <time_expr> )
TIMESTAMP_TZ_FROM_PARTS( <year>, <month>, <day>, <hour>, <minute>, <second> [, <nanosecond>] [, <time_zone>] )
Bemerkung
Die Datums- und Zeitausdrucksversion von TIMESTAMP_FROM_PARTS ist nur gültig, wenn der Sitzungsparameter TIMESTAMP_TYPE_MAPPING auf TIMESTAMP_NTZ gesetzt ist.
Argumente¶
Benötigt:
Jahr
Ein ganzzahliger Ausdruck, der beim Erstellen eines Zeitstempels als Jahr verwendet wird.
Monat
Ein ganzzahliger Ausdruck, der beim Erstellen eines Zeitstempels als Monat verwendet wird, wobei Januar als
1
und Dezember als12
dargestellt werden.Tag
Ein ganzzahliger Ausdruck, der beim Erstellen eines Zeitstempels als Tag verwendet wird, normalerweise im Bereich
1
-31
.Stunde
Ein ganzzahliger Ausdruck, der beim Erstellen eines Zeitstempels als Stunde verwendet wird, normalerweise im Bereich
0
-23
.Minute
Ein ganzzahliger Ausdruck, der beim Erstellen eines Zeitstempels als Minute verwendet wird, normalerweise im Bereich
0
-59
.Sekunde
Ein ganzzahliger Ausdruck, der beim Erstellen eines Zeitstempels als Sekunde verwendet wird, normalerweise im Bereich
0
-59
.Datumsausdruck
,Zeitausdruck
Geben die Datums- und Zeitausdrücke an, die zum Erstellen eines Zeitstempels verwendet werden sollen, wobei
Datumsausdruck
Jahr, Monat und Tag undZeitausdruck
Stunde, Minute, Sekunde und Nanosekunden innerhalb des Tags für den Zeitstempel angeben. Gilt nur für:TIMESTAMP_FROM_PARTS (wenn der Sitzungsparameter TIMESTAMP_TYPE_MAPPING auf TIMESTAMP_NTZ gesetzt ist)
TIMESTAMP_NTZ_FROM_PARTS
Optional:
Nanosekunden
Ein ganzzahliger Ausdruck, der beim Erstellen eines Zeitstempels als Nanosekunde verwendet wird, normalerweise im Bereich
0
-999999999
.Zeitzone
Ein Zeichenfolgenausdruck, der beim Erstellen eines Zeitstempels als Zeitzone verwendet wird (z. B.
America/Los_Angeles
). Gilt nur für:TIMESTAMP_FROM_PARTS (wenn der Sitzungsparameter TIMESTAMP_TYPE_MAPPING auf TIMESTAMP_TZ gesetzt ist)
TIMESTAMP_TZ_FROM_PARTS
Nutzungshinweise¶
TIMESTAMP_FROM_PARTS-Varianten werden normalerweise genutzt, um Werte in den „normalen“ Wertebereichen zu verarbeiten (z. B. Monate
1
-12
, Tage1
-31
, Stunden0
-23
usw.); sie können jedoch auch Werte außerhalb dieser Bereiche verarbeiten. Dies ermöglicht die Auswahl des N-ten Tages in einem Jahr oder der N-ten Sekunde an einem Tag, was zur Vereinfachung einiger Berechnungen beiträgt.TIMESTAMP_FROM_PARTS entspricht der durch den Sitzungsparameter TIMESTAMP_TYPE_MAPPING angegebenen Variante (Standardwert ist TIMESTAMP_LTZ).
Beispiele¶
Festlegen der Sitzungsvariablen, die das Ausgabeformat und die Zeitzone steuern:
ALTER SESSION SET TIMESTAMP_OUTPUT_FORMAT='YYYY-MM-DD HH24:MI:SS.FF9 TZH:TZM'; ALTER SESSION SET TIMESTAMP_NTZ_OUTPUT_FORMAT='YYYY-MM-DD HH24:MI:SS.FF9 TZH:TZM'; ALTER SESSION SET TIMEZONE='America/New_York';
Verwenden von TIMESTAMP_LTZ_FROM_PARTS
:
SELECT TIMESTAMP_LTZ_FROM_PARTS(2013, 4, 5, 12, 00, 00); +--------------------------------------------------+ | TIMESTAMP_LTZ_FROM_PARTS(2013, 4, 5, 12, 00, 00) | |--------------------------------------------------| | 2013-04-05 12:00:00.000000000 -0400 | +--------------------------------------------------+
Verwenden von TIMESTAMP_NTZ_FROM_PARTS
:
select timestamp_ntz_from_parts(2013, 4, 5, 12, 00, 00, 987654321); +-------------------------------------------------------------+ | TIMESTAMP_NTZ_FROM_PARTS(2013, 4, 5, 12, 00, 00, 987654321) | |-------------------------------------------------------------| | 2013-04-05 12:00:00.987654321 | +-------------------------------------------------------------+
Verwenden von TIMESTAMP_NTZ_FROM_PARTS
mit einem Datum und einer Uhrzeit anstatt mit Jahr, Monat, Tag, Stunde usw.:
select timestamp_ntz_from_parts(to_date('2013-04-05'), to_time('12:00:00')); +----------------------------------------------------------------------+ | TIMESTAMP_NTZ_FROM_PARTS(TO_DATE('2013-04-05'), TO_TIME('12:00:00')) | |----------------------------------------------------------------------| | 2013-04-05 12:00:00.000000000 | +----------------------------------------------------------------------+
Verwenden von TIMESTAMP_TZ_FROM_PARTS
mit einer Standardzeitzone der Sitzung (‚America/New_York‘/-0400):
select timestamp_tz_from_parts(2013, 4, 5, 12, 00, 00); +-------------------------------------------------+ | TIMESTAMP_TZ_FROM_PARTS(2013, 4, 5, 12, 00, 00) | |-------------------------------------------------| | 2013-04-05 12:00:00.000000000 -0400 | +-------------------------------------------------+
Verwenden von TIMESTAMP_TZ_FROM_PARTS
mit einer bestimmten Zeitzone (‚America/Los_Angeles‘/-0700). Beachten Sie auch die Verwendung von 0 als Nanosekunden-Argument:
select timestamp_tz_from_parts(2013, 4, 5, 12, 00, 00, 0, 'America/Los_Angeles'); +---------------------------------------------------------------------------+ | TIMESTAMP_TZ_FROM_PARTS(2013, 4, 5, 12, 00, 00, 0, 'AMERICA/LOS_ANGELES') | |---------------------------------------------------------------------------| | 2013-04-05 12:00:00.000000000 -0700 | +---------------------------------------------------------------------------+
Verarbeiten von Werten, die außerhalb normaler Bereiche liegen (mit Abzug von 1 Stunde durch Angabe von -3600 Sekunden):
select timestamp_from_parts(2013, 4, 5, 12, 0, -3600); +------------------------------------------------+ | TIMESTAMP_FROM_PARTS(2013, 4, 5, 12, 0, -3600) | |------------------------------------------------| | 2013-04-05 11:00:00.000000000 | +------------------------------------------------+