Kategorien:

Konvertierungsfunktionen, Datums- und Uhrzeitfunktionen

TO_TIME , TIME

Konvertiert einen Eingabeausdruck in eine Zeit. Wenn die Eingabe NULL lautet, wird NULL zurückgegeben.

Siehe auch:

TRY_TO_TIME

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

Benötigt:

Zeichenfolgenausdruck oder Zeitstempelausdruck oder Variant-Ausdruck oder Ganzzahl

Ausdruck, der in eine Uhrzeit umgewandelt werden soll:

  • Bei Zeichenfolgenausdruck das Ergebnis der Umwandlung der Zeichenfolge in eine Uhrzeit.

  • Bei Zeitstempelausdruck die Uhrzeitkomponente des Eingabewerts.

  • Bei einer Zeichenfolge, die eine Ganzzahl enthält, wird der skalierte Wert als die Anzahl der Sekunden seit Mitternacht behandelt. Ist der skalierte Wert größer oder gleich 86.400 (Anzahl der Sekunden pro Tag), wird mit dem Modulus (Restwert) von 86.400 gerechnet. Beispiel: 86.401 ist eine Sekunde nach Mitternacht.

    Informationen zur Skalierung finden Sie in den Nutzungshinweisen.

    Die Verwendung von Ganzzahlen in Anführungszeichen als Eingabewerte ist veraltet.

  • Bei einem Variant-Ausdruck:

    • Wenn der Variant-Wert eine Zeichenfolge im TIME-Format (‚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-null-Wert enthält, ist die Ausgabe NULL.

Bei allen anderen Werten wird ein Konvertierungsfehler generiert.

Optional:

Format

Zeitformatbezeichner für Zeichenfolgenausdruck oder AUTO, der angibt, dass Snowflake das zu verwendende Format automatisch ermitteln soll. Weitere Informationen dazu finden Sie unter Datums- und Uhrzeitformate in Konvertierungsfunktionen.

Standardwert: aktueller Wert des Sitzungsparameters TIME_INPUT_FORMAT (normalerweise AUTO)

Rückgabewerte

Der Datentyp des zurückgegebenen Werts ist TIME.

Nutzungshinweise

  • Wenn das Format des Eingabeparameters eine Zeichenfolge ist, die eine Ganzzahl enthält, wird der Wert wie folgt skaliert:

  • 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.

    Vorsicht

    Derzeit werden negative Werte immer als Sekunden behandelt. Beispielsweise wird -31.536.000.000.000.000.000 als eine Anzahl von Sekunden vor dem Jahr 1970 behandelt, obwohl seine Skala impliziert, dass es als Nanosekunden verwendet werden soll.

    Dieses Verhalten kann sich in Zukunft möglicherweise ändern.

    Bemerkung

    Warnung vor Veralten: In zukünftigen Snowflake-Versionen werden Ganzzahlen in Zeichenfolgen möglicherweise automatisch als Sekunden und nicht als Millisekunden, Mikrosekunden oder Nanosekunden interpretiert. Snowflake empfiehlt, dass Sie bei Zeichenfolgen, die nur Ganzzahlen enthalten, welche als Sekunden interpretiert werden sollen, TO_DATE, TO_TIME oder TO_TIMESTAMP aufrufen.

  • Wenn mehr als eine Zeile ausgewertet wird (die Eingabe ist z. B. 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.

    Wenn beispielsweise der Wert größer oder gleich 31.536.000.000 und kleiner als 31.536.000.000.000 ist, werden alle Werte als Millisekunden behandelt.

    Um Zeilen parallel zu verarbeiten, kann ein Satz von Zeilen entweder durch den Benutzer (z. B. mit einer PARTITION BY-Klausel) oder durch Snowflake in Gruppen unterteilt werden. Die erste Zeile in jeder Gruppe bestimmt, ob der Wert für die gesamte Gruppe als Sekunden, Millisekunden, Mikrosekunden oder Nanosekunden interpretiert wird. Dies kann zu unterschiedlichen Ergebnissen führen, wenn sich die Reihenfolge der Werte ändert. Um dieses Problem zu vermeiden, geben Sie für den Wert das Eingabeformat an, entweder als ein Argument der Funktion oder über einen Sitzungsparameter.

  • Im Gegensatz zur Funktion TO_TIME unterstützt die Funktion TIME den optionalen Parameter Format nicht.

Beispiele

Diese Beispiele veranschaulichen die Funktion TO_TIME.

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             |
+-------------------------+----------------------+

In diesem Beispiel wird gezeigt, wie mit der Funktion TO_TIME andere Feldtrennzeichen als die Standard-Doppelpunkte verarbeitet werden (in diesem Beispiel wird das Punktzeichen als Trennzeichen zwischen Stunden und Minuten sowie zwischen Minuten und Sekunden verwendet):

SELECT TO_TIME('11.15.00', 'HH24.MI.SS');
+-----------------------------------+
| TO_TIME('11.15.00', 'HH24.MI.SS') |
|-----------------------------------|
| 11:15:00                          |
+-----------------------------------+