Sdílet prostřednictvím


parse_timestamp Funkce

Platí pro:check označený ano Databricks Runtime 18.1 a novější

Pokud expr je řetězec, parsuje ho na TIMESTAMP základě prvního odpovídajícího vzoru v daném seznamu formátů. Jeden nebo více formátů může odkazovat na předdefinovaný seznam formátů. Pokud expr je číselný typ, parsuje ho jako časové razítko unixu.

Syntaxe

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

Argumenty

  • výraz: Řetězec nebo číselná hodnota, která se má parsovat do .TIMESTAMP Mezi akceptované typy patří:
    • TINYINT, SMALLINT, , INTBIGINT
    • FLOAT, DOUBLE
    • DECIMAL (až 18 přesnosti)
    • STRING
  • vzor: Volitelný seznam vzorů časového razítka nebo odkaz na předdefinovaný seznam, například #iso8601 nebo #rfc3339. Vzory časového razítka musí být konstantní řetězec. Pokud není zadán žádný vzor, je ekvivalentní k určení #extended.

Návraty

A TIMESTAMP představující parsovaný expr.

expr Pokud je řetězec, parsuje se podle prvního shodného vzoru. Pokud se žádný ze vzorů neshoduje, funkce vyvolá chybu.

expr Pokud je číslo, je vždy analyzováno jako časové razítko unixu.

Pokud expr je NULL, vrátí funkce NULL.

Pokud se chcete vrátit NULL místo chyby při selhání analýzy, použijte try_parse_timestamp funkci.

Poznámky

  • Pokud seznam vzorů obsahuje NULL hodnoty, budou ignorovány. Pokud jsou NULLvšechny zadané vzory , výsledek je NULL.
  • Pokud časové razítko odpovídá vzoru obsahujícímu žádné informace o časovém pásmu, analyzuje se v časovém pásmu relace.

Stavy chyb

Příklady

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

Referenční dokumentace k vzoru

parse_timestamp a try_parse_timestamp funkce používají sadu vzorů, která se liší některými způsoby od standardního vzoru data a času používaného to_timestamp. Následující tabulka uvádí všechny symboly vzorů a to, jestli jsou podporované:

Symbol Význam Příklady Podpora
U Unix Viz poznámka níže Podporováno
G éra LP; Léta Páně Nepodporováno
y rok 2020; 20 Podporováno
D den v roce 189 Nepodporováno
M/L měsíc v roce 7; 07; Červenec; Červenec Podporováno
d den měsíce 28 Podporováno
Q/q čtvrtletí roku 3; 03; 3. čtvrtletí; 3. čtvrtletí Nepodporováno
E den v týdnu Út; Úterý Podporováno
F zarovnaný den týdne v měsíci 3 Nepodporováno
a režim dne AM/PM Projektový manažer Podporováno
h hodina dopoledne nebo odpoledne (1-12) 12 Podporováno
K hodina odpoledne (0–11) 0 Podporováno
k hodina dne (1–24) 1 Nepodporováno
H hodina dne (0–23) 0 Podporováno
m minuta v hodině 30 Podporováno
s sekunda za minutu 55 Podporováno
S zlomek sekundy 978 Podporováno
V ID časového pásma Amerika/Los_Angeles; Z; -08:30 Podporováno
z název časového pásma Tichomořský běžný čas; PST Podporováno
O lokalizované odsazení časového pásma GMT+8; GMT+08:00; UTC-08:00 Podporováno
X odsazení zóny 'Z' pro nulu Z; -08; -0830; -08:30 Podporováno (1 až 3 číslice)
x časový posun zóny +0000; -08; -0830; -08:30 Podporováno (1 až 3 číslice)
Z časový posun zóny +0000; -0800; -08:00 Podporováno
# seznam vzorů #common, #iso8601 Podporováno

Poznámka:

Vzor unixu (U): Seznam #unix vzorů analyzuje časové razítka unixové epochy. V případě kalendářních dat mezi 1971-08-03 a 3554-06-09 může implementace v sekundách, mikrosekundách a nanosekundách disambiguate a parsovat časová razítka Unixu. Data mimo tento rozsah se nemusí podařit analyzovat nebo analyzovat nesprávně. Záporná celá čísla nejsou podporována. Desetinné hodnoty jsou podporovány až 9 desetinných míst a jsou zkráceny tak, aby odpovídaly přesnosti typu výsledku.

Národní prostředí: Zástupné symboly vzorů nejsou s podporou národního prostředí. Názvy měsíců a dnů jsou podporovány pouze v angličtině.

Seznamy vzorů

Předdefinovaný seznam vzorů můžete předat podle názvu (například #extended, #iso8601). #unix K dispozici jsou následující seznamy vzorů:

  • běžné – běžně zjištěné vzory, které nejsou definovány standardem
  • iso8601
  • rfc1036, rfc1123, rfc2822, rfc3164, rfc3339, rfc4287, rfc5322, rfc5424, rfc6265, rfc7231, rfc8222, rfc850, rfc9110, rfc9557
  • unix – pouze časové razítka unixové epochy
  • rozšířené – Unie všech výše uvedených seznamů; také výchozí, pokud není zadán žádný vzor
  • extended-dmy — rozšířeno s formáty specifické pro národní prostředí DMY
  • extended-mdy – rozšířené s formáty specifické pro národní prostředí MDY