Kategorien:

Datums- und Uhrzeitfunktionen

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 als 12 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 und time_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, Tage 1-31, Stunden 0-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                  |
+------------------------------------------------+
Zurück zum Anfang