Delen via


parse_timestamp functie

Van toepassing op:controleren gemarkeerd als Ja Databricks Runtime 18.1 en hoger

Als expr dit een tekenreeks is, parseert u deze in een TIMESTAMP op basis van het eerste overeenkomende patroon in de opgegeven lijst met indelingen. Een of meer indelingen kunnen verwijzen naar een vooraf gedefinieerde lijst met indelingen. Als expr dit een numeriek type is, parseert u het als een Unix-tijdstempel.

Syntaxis

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

Argumenten

  • expr: een tekenreeks of numerieke waarde die moet worden geparseerd in een TIMESTAMP. Geaccepteerde typen zijn:
    • TINYINT,SMALLINT,INT,BIGINT
    • FLOAT, DOUBLE
    • DECIMAL (tot 18 precisie)
    • STRING
  • patroon: Een optionele lijst met tijdstempelpatronen of een verwijzing naar een vooraf gedefinieerde lijst, zoals #iso8601 of #rfc3339. De tijdstempelpatronen moeten een constante tekenreeks zijn. Als er geen patroon is opgegeven, is dit gelijk aan het opgeven #extended.

Retouren

Een TIMESTAMP die de geparseerde exprvertegenwoordigt.

Als de expr tekenreeks een tekenreeks is, wordt deze geparseerd volgens het eerste overeenkomende patroon. Als geen van de patronen overeenkomt, genereert de functie een fout.

Als de expr waarde numeriek is, wordt deze altijd geparseerd als een Unix-tijdstempel.

Als exprNULL is, retourneert de functie NULL.

Als u wilt terugkeren NULL in plaats van een fout wanneer het parseren mislukt, gebruikt u try_parse_timestamp de functie.

Aantekeningen

  • Als de patroonlijst waarden bevat NULL , worden ze genegeerd. Als alle opgegeven patronen zijn NULL, is NULLhet resultaat .
  • Als de tijdstempel overeenkomt met een patroon zonder tijdzonegegevens, wordt deze geparseerd in de sessietijdzone.

Foutvoorwaarden

Examples

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

Patroonreferentie

parse_timestamp en try_parse_timestamp functie maakt gebruik van een patroonset die op sommige manieren verschilt van het standaard datum/tijd-patroon dat wordt gebruikt door to_timestamp. De volgende tabel bevat alle patroonsymbolen en of elk patroon wordt ondersteund:

Symbol Meaning Examples Support
U Unix Zie de opmerking hieronder Ondersteund
G tijdperk AD; Na Christus Niet ondersteund
y jaar 2020; 20 Ondersteund
D dag van het jaar 189 Niet ondersteund
M/L maand van het jaar 7; 07; Jul; Juli Ondersteund
d dag van de maand 28 Ondersteund
Q/q kwartaal van het jaar 3; 03; Q3; 3e kwartaal Niet ondersteund
E dag van de week Di; Dinsdag Ondersteund
F uitgelijnde dag van de week in maand 3 Niet ondersteund
a voormiddag-namiddag namiddag Ondersteund
h uur-op-de-klok-van-am-pm (1-12) 12 Ondersteund
K uur van de ochtend/avond (0-11) 0 Ondersteund
k uur-van-de-dag (1-24) 1 Niet ondersteund
H uur van dag (0-23) 0 Ondersteund
m minuut van het uur 30 Ondersteund
s seconde van minuut 55 Ondersteund
S breuk van seconde 978 Ondersteund
V tijdzone-id Amerika/Los_Angeles; Z; -08:30 Ondersteund
z tijdzonenaam Pacific Standaardtijd; PST Ondersteund
O gelokaliseerde zone-offset GMT+8; GMT+08:00; UTC-08:00 Ondersteund
X zone-offset 'Z' voor nul Z; -08; -0830; -08:30 Ondersteund (1-3 cijfers)
x tijdszoneverschuiving +0000; -08; -0830; -08:30 Ondersteund (1-3 cijfers)
Z tijdszoneverschuiving +0000; -0800; -08:00 Ondersteund
# patroonlijst #common, #iso8601 Ondersteund

Opmerking

Unix-patroon (U): De #unix patroonlijst parseert unix-tijdstempels. Voor datums tussen 1971-08-03 en 3554-06-09 kan de implementatie Unix-tijdstempels in seconden, microseconden en nanoseconden niet eenduidig en parseren. Datums buiten dat bereik kunnen niet onjuist worden geparseerd of geparseerd. Negatieve gehele getallen worden niet ondersteund. Breukwaarden worden ondersteund tot 9 decimalen en worden afgekapt zodat deze overeenkomen met de precisie van het resultaattype.

Locale: Tijdelijke aanduidingen voor patronen zijn niet landinstellingsbewust. Namen van maanden en dagen worden alleen in het Engels ondersteund.

Patroonlijsten

U kunt een vooraf gedefinieerde patroonlijst doorgeven op naam (bijvoorbeeld #extended, #iso8601#unix). De volgende patroonlijsten zijn beschikbaar:

  • algemeen — Veelgebruikte patronen die niet zijn gedefinieerd door een standaard
  • iso8601
  • rfc1036, rfc1123, rfc2822, rfc3164, rfc3339, rfc4287, rfc5322, rfc5424, rfc6265, rfc7231, rfc822, rfc850, rfc9110, rfc9557
  • unix - Alleen tijdstempels voor Unix-epoch
  • uitgebreid — Unie van alle bovenstaande lijsten; ook de standaardinstelling wanneer er geen patroon is opgegeven
  • extended-dmy — Uitgebreid met DMY-landinstellingen-specifieke indelingen
  • extended-mdy — Uitgebreid met MDY-landinstellingenspecifieke indelingen