TO_TIME , TIME¶
Konvertiert einen Eingabeausdruck in eine Zeit.
- Siehe auch:
Syntax¶
TO_TIME( <string_expr> [, <format> ] )
TO_TIME( <timestamp_expr> )
TO_TIME( '<integer>' )
TO_TIME( <variant_expr> )
TIME( <string_expr> )
TIME( <timestamp_expr> )
TIME( '<integer>' )
TIME( <variant_expr> )
Argumente¶
Erforderlich:
string_expr
odertimestamp_expr
oder'integer'
odervariant_expr
Ausdruck, der in eine Uhrzeit umgewandelt werden soll:
Bei
string_expr
die Zeichenfolge, die in einen Zeitwert konvertiert werden soll.Bei
timestamp_expr
der Zeitstempel, der in eine Uhrzeit konvertiert werden soll. Die Funktion gibt die Uhrzeitkomponente des Eingabewerts zurück.Bei
'integer'
eine Zeichenfolge mit einer Ganzzahl, die in einen Zeitwert konvertiert werden soll. Die Ganzzahl (Integer) wird als die Anzahl der Sekunden, Millisekunden, Mikrosekunden oder Nanosekunden nach Beginn der Unix-Epoche behandelt. Weitere Informationen dazu finden Sie in den Nutzungshinweisen.Für diesen Zeitstempel erhält die Funktion die Anzahl der Sekunden nach dem Beginn der Unix-Epoche. Die Funktion führt eine Modulo-Operation aus, um den Rest aus der Division dieser Zahl durch die Anzahl der Sekunden eines Tages (
86400
) zu erhalten:number_of_seconds % 86400
Die Funktion interpretiert diesen Rest als die Anzahl der Sekunden nach Mitternacht.
Angenommen, der Wert ist
'31536002789'
.Ausgehend von der Größe dieses Wertes verwendet die Funktion Millisekunden als Zeiteinheit und bestimmt, dass der Wert für
1971-01-01 00:00:02.789
steht.Die Funktion ermittelt für diesen Wert die Anzahl der Sekunden nach der Unix-Epoche (
31536002
).Die Funktion erhält den Rest aus der Division dieser Zahl durch die Anzahl der Sekunden eines Tages (
31536002 % 86400
).Die Funktion verwendet den Rest (
2
) als die Anzahl der Sekunden nach Mitternacht. Der resultierende Wert ist00:00:02
.
variant_expr
:Wenn der VARIANT-Wert eine Zeichenfolge im TIME-Format (wie
HH:MI:SS
) enthält, wird eine Zeichenfolgenkonvertierung durchgeführt.Wenn der VARIANT-Wert eine Zeichenfolge im INTEGER-Format enthält, wird eine Zeichenfolgenkonvertierung durchgeführt und der Wert als Anzahl der Sekunden seit Mitternacht behandelt (Modulus von 86.400, falls erforderlich).
Wenn der VARIANT-Wert einen JSON-Nullwert enthält, ist die Ausgabe NULL.
Bei allen anderen Werten wird ein Konvertierungsfehler generiert.
Optional:
format
Uhrzeitformatspezifizierer für
string_expr
oder AUTO, was angibt, dass Snowflake automatisch das zu verwendende Format ermittelt. Weitere Informationen dazu finden Sie unter Datums- und Uhrzeitformate in Konvertierungsfunktionen.Standard: Der aktuelle Wert des Sitzungsparameters TIME_INPUT_FORMAT (Standard: AUTO)
Rückgabewerte¶
Der Datentyp des zurückgegebenen Werts ist TIME. Wenn die Eingabe NULL ist, wird NULL zurückgegeben.
Nutzungshinweise¶
Das Anzeigeformat für Zeitwerte in der Ausgabe wird durch den Sitzungsparameter TIME_OUTPUT_FORMAT bestimmt (Standard:
HH24:MI:SS
).Wenn das Format des Eingabeparameters eine Zeichenfolge ist, die eine Ganzzahl (Integer) enthält, wird die Maßeinheit für den Wert (Sekunden, Mikrosekunden, Millisekunden oder Nanosekunden) wie folgt bestimmt:
Nachdem die Zeichenfolge in eine Ganzzahl konvertiert wurde, wird die Ganzzahl als Anzahl von Sekunden, Millisekunden, Mikrosekunden oder Nanosekunden nach dem Beginn der Unix-Epoche behandelt (1970-01-01 00:00:00.000000000 UTC).
Wenn die Ganzzahl kleiner als 31.536.000.000 (die Anzahl der Millisekunden eines Jahres) ist, wird der Wert als Anzahl der Sekunden behandelt.
Wenn der Wert größer oder gleich 31.536.000.000 und kleiner als 31.536.000.000.000 ist, wird der Wert als Millisekunden behandelt.
Wenn der Wert größer oder gleich 31.536.000.000.000 und kleiner als 31.536.000.000.000.000 ist, wird der Wert als Mikrosekunde behandelt.
Wenn der Wert größer oder gleich 31.536.000.000.000.000 ist, wird der Wert als Nanosekunde behandelt.
Wenn mehr als eine Zeile ausgewertet wird (z. B. bei Eingabe der Spaltenname einer Tabelle, die mehr als eine Zeile enthält), bestimmt der erste verarbeitete Wert, ob alle nachfolgenden Werte als Sekunden, Millisekunden, Mikrosekunden oder Nanosekunden behandelt werden.
Im Gegensatz zur Funktion TO_TIME unterstützt die Funktion TIME den optionalen Parameter
format
nicht.
Beispiele¶
In diesen Beispielen werden die Funktionen TO_TIME und TIME verwendet.
SELECT TO_TIME('13:30:00'), TIME('13:30:00');
+---------------------+------------------+
| TO_TIME('13:30:00') | TIME('13:30:00') |
|---------------------+------------------|
| 13:30:00 | 13:30:00 |
+---------------------+------------------+
SELECT TO_TIME('13:30:00.000'), TIME('13:30:00.000');
+-------------------------+----------------------+
| TO_TIME('13:30:00.000') | TIME('13:30:00.000') |
|-------------------------+----------------------|
| 13:30:00 | 13:30:00 |
+-------------------------+----------------------+
Dieses Beispiel zeigt, wie mit der Funktion TO_TIME andere Feldtrennzeichen als die Standard-Doppelpunkte verarbeitet werden können. Das Beispiel verwendet das Punktzeichen als Trennzeichen zwischen Stunden und Minuten sowie zwischen Minuten und Sekunden:
SELECT TO_TIME('11.15.00', 'HH24.MI.SS');
+-----------------------------------+
| TO_TIME('11.15.00', 'HH24.MI.SS') |
|-----------------------------------|
| 11:15:00 |
+-----------------------------------+
Dieses Beispiel zeigt, wie die Funktion TO_TIME eine Zeichenfolge interpretiert, die einen Integer-Wert enthält:
CREATE OR REPLACE TABLE demo1_time (
description VARCHAR,
value VARCHAR -- string rather than bigint
);
INSERT INTO demo1_time (description, value) VALUES
('Seconds', '31536001'),
('Milliseconds', '31536002400'),
('Microseconds', '31536003600000'),
('Nanoseconds', '31536004900000000');
SELECT description,
value,
TO_TIMESTAMP(value),
TO_TIME(value)
FROM demo1_time
ORDER BY value;
+--------------+-------------------+-------------------------+----------------+
| DESCRIPTION | VALUE | TO_TIMESTAMP(VALUE) | TO_TIME(VALUE) |
|--------------+-------------------+-------------------------+----------------|
| Seconds | 31536001 | 1971-01-01 00:00:01.000 | 00:00:01 |
| Milliseconds | 31536002400 | 1971-01-01 00:00:02.400 | 00:00:02 |
| Microseconds | 31536003600000 | 1971-01-01 00:00:03.600 | 00:00:03 |
| Nanoseconds | 31536004900000000 | 1971-01-01 00:00:04.900 | 00:00:04 |
+--------------+-------------------+-------------------------+----------------+