Dela via


funktion parse_timestamp

Gäller för:check markerat ja Databricks Runtime 18.1 och senare

Om expr är en sträng parsar du den i ett TIMESTAMP enligt det första matchande mönstret i den angivna listan med format. Ett eller flera av formaten kan referera till en fördefinierad lista med format. Om expr är en numerisk typ parsar du den som en Unix-tidsstämpel.

Syntax

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

Arguments

  • expr: En sträng eller ett numeriskt värde som ska parsas till en TIMESTAMP. Godkända typer är:
    • TINYINT, SMALLINT, , INTBIGINT
    • FLOAT, DOUBLE
    • DECIMAL (upp till 18 precision)
    • STRING
  • mönster: En valfri lista med tidsstämpelmönster eller en referens till en fördefinierad lista som #iso8601 eller #rfc3339. Tidsstämpelmönster måste vara en konstant sträng. Om inget mönster anges motsvarar det att #extendedange .

Retur

En TIMESTAMP som representerar den tolkade expr.

expr Om är en sträng parsas den enligt det första matchande mönstret. Om inget av mönstren matchar genererar funktionen ett fel.

Om är expr numeriskt parsas det alltid som en Unix-tidsstämpel.

Om expr är NULLreturnerar NULLfunktionen .

Om du vill returnera NULL i stället för ett fel när parsningen misslyckas använder du try_parse_timestamp funktionen.

Notes

  • Om mönsterlistan innehåller NULL värden ignoreras de. Om alla angivna mönster är NULLär NULLresultatet .
  • Om tidsstämpeln matchar ett mönster som inte innehåller någon tidszonsinformation parsas den i sessionens tidszon.

Feltillstånd

Exempel

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

Mönsterreferens

parse_timestamp och try_parse_timestamp funktionen använder en mönsteruppsättning som på vissa sätt skiljer sig från det standard datetime-mönster som används av to_timestamp. I följande tabell visas alla mönstersymboler och om var och en stöds:

Symbol Innebörd Exempel Support
U Unix Se kommentaren nedan Stöds
G era e.Kr; Efter Kristus Stöds ej
y år 2020; 20 Stöds
D dag på året 189 Stöds ej
M/L månad på året 7; 07; Jul; Juli Stöds
d månadens dag 28 Stöds
Q/q kvartal på året 3; 03; Q3; Tredje kvartalet Stöds ej
E veckodag Tis; Tisdag Stöds
F justerad veckodag i månaden 3 Stöds ej
a förmiddag-eftermiddag-dag PM Stöds
h klocktimme av fm-em (1-12) 12 Stöds
K timme 'am-pm' (0-11) 0 Stöds
k klocktimme på dygn (1–24) 1 Stöds ej
H dagens timme (0–23) 0 Stöds
m minut av timmen 30 Stöds
s sekund i minuten 55 Stöds
S bråkdel av sekunden 978 Stöds
V tidszons-ID Amerika/Los_Angeles; Z; -08:30 Stöds
z tidszonsnamn Stillahavstiden; PST (UTC-8) Stöds
O lokaliserad zonförskjutning GMT+8; GMT+08:00; UTC-08:00 Stöds
X tidszonsförskjutning "Z" för noll Z; -08; -0830; -08:30 Stöds (1–3 siffror)
x zonförskjutning +0000; -08; -0830; -08:30 Stöds (1–3 siffror)
Z zonförskjutning +0000; -0800; -08:00 Stöds
# mönsterlista #common, #iso8601 Stöds

Anmärkning

Unix-mönster (U): Mönsterlistan #unix parsar Tidsstämplar för Unix-epok. För datum mellan 1971-08-03 och 3554-06-09 kan implementeringen skilja och parsa Unix-tidsstämplar i sekunder, mikrosekunder och nanosekunder. Datum utanför intervallet kan misslyckas med att parsa eller parsa felaktigt. Negativa heltal stöds inte. Bråkvärden stöds upp till 9 decimaler och trunkeras för att matcha resultattypens precision.

Locale: Platshållare för mönster är inte språkmedvetna. Namn på månad och dag stöds endast på engelska.

Mönsterlistor

Du kan skicka en fördefinierad mönsterlista efter namn (till exempel #extended, #iso8601, #unix). Följande mönsterlistor är tillgängliga:

  • common – Vanliga mönster som inte definieras av en standard
  • iso8601
  • rfc1036, rfc1123, rfc2822, rfc3164, rfc3339, rfc4287, rfc5322, rfc5424, rfc6265, rfc7231, rfc822, rfc850, rfc9110, rfc9557
  • unix – Endast Tidsstämplar för Unix-epok
  • extended – Union of all of the above lists; även standardvärdet när inget mönster har angetts
  • extended-dmy – Utökad med DMY-språkspecifika format
  • extended-mdy – Utökad med MDY-språkspecifika format