Freigeben über


parse_timestamp-Funktion

Gilt für:check marked yes Databricks Runtime 18.1 und höher

Wenn expr es sich um eine Zeichenfolge handelt, analysiert sie gemäß TIMESTAMP dem ersten übereinstimmenden Muster in der angegebenen Liste der Formate. Mindestens ein Format kann auf eine vordefinierte Liste von Formaten verweisen. Wenn expr es sich um einen numerischen Typ handelt, analysiert es als Unix-Zeitstempel.

Syntax

parse_timestamp(expr [, { pattern [...] } ])

Argumente

  • Ausdruck: Eine Zeichenfolge oder ein numerischer Wert, der in eine TIMESTAMPAnalyse umgewandelt werden soll. Akzeptierte Typen sind:
    • TINYINT SMALLINT INT BIGINT
    • FLOAT, DOUBLE
    • DECIMAL (bis zu 18 Genauigkeit)
    • STRING
  • Muster: Eine optionale Liste von Zeitstempelmustern oder ein Verweis auf eine vordefinierte Liste, z #iso8601 . B. oder #rfc3339. Die Zeitstempelmuster müssen eine konstante Zeichenfolge sein. Wenn kein Muster angegeben wird, entspricht es der Angabe #extended.

Rückkehr

Eine TIMESTAMP darstellung der analysierten expr.

Wenn es expr sich um eine Zeichenfolge handelt, wird sie gemäß dem ersten Abgleichsmuster analysiert. Wenn keines der Muster übereinstimmt, löst die Funktion einen Fehler aus.

Wenn dies expr numerisch ist, wird sie immer als Unix-Zeitstempel analysiert.

Ist expr dies NULLder Wert, gibt die Funktion zurück NULL.

Verwenden Sie try_parse_timestamp die Funktion, um anstelle eines Fehlers zurückzugebenNULL, wenn die Analyse fehlschlägt.

Hinweise

  • Wenn die Musterliste Werte enthält NULL , werden sie ignoriert. Wenn alle bereitgestellten Muster vorhanden sind NULL, lautet NULLdas Ergebnis .
  • Wenn der Zeitstempel mit einem Muster übereinstimmt, das keine Zeitzoneninformationen enthält, wird er in der Sitzungszeitzone analysiert.

Fehlerbedingungen

Beispiele

-- Parse timestamp according to default pattern list
> SELECT parse_timestamp('2024-12-09T19:30:01');
 2024-12-09 19:30:01.000

-- Parse a microsecond epoch timestamp using the unix pattern list
> SELECT parse_timestamp('1733772601000000', '#unix');
 2024-12-09 19:30:01.000

-- Bad `expr` that does not match any pattern
> SELECT parse_timestamp('bad input');
  Error: CANNOT_PARSE_TIMESTAMP

-- Use try_parse_timestamp to return NULL instead of error
> SELECT try_parse_timestamp('bad input');
 NULL

-- Extend the default pattern list with custom patterns
> SELECT parse_timestamp(col, "#extended", "dd MMM, yyyy", "MMM d; yy") FROM VALUES ('2024-12-01'), ('02 Dec, 2024'), ('DEC 3; 24') AS t(col)
 2024-12-01 00:00:00.000
 2024-12-02 00:00:00.000
 2024-12-03 00:00:00.000

Musterreferenz

parse_timestamp und try_parse_timestamp die Funktion verwenden einen Mustersatz, der sich auf verschiedene Arten vom standardmäßigen Datums-/Uhrzeitmuster unterscheidet, das von to_timestamp. In der folgenden Tabelle sind alle Mustersymbole aufgeführt, und es wird aufgeführt, ob die einzelnen Mustersymbole unterstützt werden:

Symbol Bedeutung Beispiele Support
U Unix Siehe Hinweis unten Unterstützt
G Ära n. Chr.; Nach Christus Nicht unterstützt
y Jahr 2020; 20 Unterstützt
D Tag des Jahres 189 Nicht unterstützt
M/L Monat des Jahres 7; 07; Jul; Juli Unterstützt
d Tag des Monats 28 Unterstützt
Q/q Quartal des Jahres 3; 03; Q3; 3. Quartal Nicht unterstützt
E Wochentag DI; Dienstag Unterstützt
F Ausgerichteter Wochentag im Monat 3 Nicht unterstützt
a Ante meridiem/post meridiem (AM/PM) nachmittags Unterstützt
h Stunde im 12-Stunden-Format, AM/PM (1–12) 12 Unterstützt
K Stunde AM/PM (0–11) 0 Unterstützt
k Zeitstunde des Tages (1–24) 1 Nicht unterstützt
H Stunde des Tages (0–23) 0 Unterstützt
m Minute der Stunde 30 Unterstützt
s Sekunde der Minute 55 Unterstützt
S Sekundenbruchteil 978 Unterstützt
V Zeitzonen-ID Amerika/Los_Angeles; Z; -08:30 Unterstützt
z Zeitzonenname Pazifische Standardzeit; Pacific Standard Time; PST Unterstützt
O Lokalisierter Zeitzonenoffset GMT+8; GMT+08:00; UTC-08:00 Unterstützt
X Zonenoffset 'Z' für Null Z; -08; -0830; -08:30 Unterstützt (1-3 Ziffern)
x Zeitzonenoffset +0000; -08; -0830; -08:30 Unterstützt (1-3 Ziffern)
Z Zeitzonenoffset +0000; -0800; -08:00 Unterstützt
# Musterliste #common, #iso8601 Unterstützt

Hinweis

Unix-Muster (U): Die #unix Musterliste analysiert Unix-Epochen-Zeitstempel. Für Datumsangaben zwischen 1971-08-03 und 3554-06-09 kann die Implementierung mehrdeutige Und analysieren Unix-Zeitstempel in Sekunden, Mikrosekunden und Nanosekunden. Datumsangaben außerhalb dieses Bereichs können nicht fälschlicherweise analysiert oder analysiert werden. Negative ganze Zahlen werden nicht unterstützt. Bruchwerte werden bis zu 9 Dezimalstellen unterstützt und werden abgeschnitten, um der Genauigkeit des Ergebnistyps zu entsprechen.

Locale: Musterplatzhalter sind nicht gebietsschemafähig. Monats- und Tagesnamen werden nur in Englisch unterstützt.

Musterlisten

Sie können eine vordefinierte Musterliste anhand des Namens übergeben (z #extended. B. , #iso8601, #unix). Die folgenden Musterlisten sind verfügbar:

  • häufig gefundene Muster, die nicht durch einen Standard definiert sind
  • iso8601
  • rfc1036, rfc1123, rfc2822, rfc3164, rfc3339, rfc4287, rfc5322, rfc5424, rfc6265, rfc7231, rfc822, rfc850, rfc9110, rfc9557
  • Unix — Unix-Epochen-Zeitstempel nur
  • erweitert — Union aller oben genannten Listen; auch die Standardeinstellung, wenn kein Muster angegeben wird
  • extended-dmy – Erweitert mit dmY-gebietsschemaspezifischen Formaten
  • extended-mdy – Erweitert mit MDY-gebietsschemaspezifischen Formaten