- 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:
year
Ein ganzzahliger Ausdruck, der beim Erstellen eines Zeitstempels als Jahr verwendet wird.
month
Ein ganzzahliger Ausdruck, der beim Erstellen eines Zeitstempels als Monat verwendet wird, wobei Januar als
1
und Dezember als12
dargestellt werden.day
Ein ganzzahliger Ausdruck, der beim Erstellen eines Zeitstempels als Tag verwendet wird, normalerweise im Bereich
1
-31
.hour
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
.second
Ein ganzzahliger Ausdruck, der beim Erstellen eines Zeitstempels als Sekunde verwendet wird, normalerweise im Bereich
0
-59
.date_expr
,time_expr
Geben die Datums- und Zeitausdrücke an, die zum Erstellen eines Zeitstempels verwendet werden sollen, wobei
date_expr
Jahr, Monat und Tag undtime_expr
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:
nanoseconds
Ein ganzzahliger Ausdruck, der beim Erstellen eines Zeitstempels als Nanosekunde verwendet wird, normalerweise im Bereich
0
-999999999
.time_zone
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_NTZ).
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 | +------------------------------------------------+