Condividi tramite


Funzione parse_timestamp

Si applica a:check contrassegnato come sì Databricks Runtime 18.1 e versioni successive

Se expr è una stringa, lo analizza in base TIMESTAMP al primo criterio di corrispondenza nell'elenco specificato di formati. Uno o più formati possono fare riferimento a un elenco predefinito di formati. Se expr è un tipo numerico, lo analizza come timestamp Unix.

Sintassi

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

Arguments

  • expr: valore stringa o numerico da analizzare in un oggetto TIMESTAMP. I tipi accettati sono:
    • TINYINT, SMALLINT, INTBIGINT
    • FLOAT, DOUBLE
    • DECIMAL (fino a 18 precisione)
    • STRING
  • pattern: elenco facoltativo di modelli di timestamp o riferimento a un elenco predefinito, #iso8601 ad esempio o #rfc3339. I modelli di timestamp devono essere una stringa costante. Se non viene specificato alcun criterio, equivale a specificare #extended.

Restituzioni

Oggetto TIMESTAMP che rappresenta l'oggetto expranalizzato.

expr Se è una stringa, viene analizzata in base al primo criterio di corrispondenza. Se nessuno dei modelli corrisponde, la funzione genera un errore.

expr Se è numerico, viene sempre analizzato come timestamp Unix.

Se expr è NULL, la funzione restituisce NULL.

Per restituire NULL invece di un errore quando l'analisi non riesce, usare latry_parse_timestamp funzione .

Note

  • Se l'elenco dei criteri contiene NULL valori, vengono ignorati. Se tutti i modelli forniti sono NULL, il risultato è NULL.
  • Se il timestamp corrisponde a un criterio che non contiene informazioni sul fuso orario, viene analizzato nel fuso orario della sessione.

Condizioni di errore

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

Informazioni di riferimento sul modello

parse_timestamp e try_parse_timestamp la funzione usano un set di criteri che differisce in alcuni modi dal modello datetime standard usato da to_timestamp. Nella tabella seguente sono elencati tutti i simboli di pattern e se ognuno è supportato:

Symbol Meaning Examples Support
U Unix Vedere la nota seguente Supportato
G epoca ANNUNCIO; Anno Domini Non supportato
y anno 2020; 20 Supportato
D giorno dell'anno 189 Non supportato
M/L mese dell'anno 7; 07; Lug; Luglio Supportato
d giorno del mese 28 Supportato
Q/q trimestre dell'anno 3; 03; Q3; Terzo trimestre Non supportato
E giorno della settimana Mar; Martedì Supportato
F giorno della settimana allineato nel mese 3 Non supportato
a am-pm-del-giorno pomeriggio Supportato
h orologio-ora-di-am-pm (1-12) 12 Supportato
Okay ora del mattino-pomeriggio (0-11) 0 Supportato
k ora del giorno (1-24) 1 Non supportato
H ora del giorno (0-23) 0 Supportato
m minuto dell'ora 30 Supportato
s secondo del minuto 55 Supportato
S frazione di secondo 978 Supportato
V ID del fuso orario America/Los_Angeles; Z; -08:30 Supportato
z nome fuso orario Ora standard del Pacifico; PST Supportato
O offset di zona localizzato GMT +8; GMT +08:00; UTC- 08.00 Supportato
X offset di zona 'Z' per valore zero Z; -08; -0830; -08:30 Supportato (1-3 cifre)
x offset del fuso orario +0000; -08; -0830; -08:30 Supportato (1-3 cifre)
Z offset del fuso orario +0000; -0800; -08:00 Supportato
# elenco criteri #common, #iso8601 Supportato

Annotazioni

Modello Unix (U): L'elenco dei criteri analizza i timestamp dell'epoca #unix Unix. Per le date comprese tra 1971-08-03 e 3554-06-09, l'implementazione può disambiguare e analizzare timestamp Unix in secondi, microsecondi e nanosecondi. Le date esterne a tale intervallo potrebbero non riuscire ad analizzare o analizzare in modo non corretto. I numeri interi negativi non sono supportati. I valori frazionari sono supportati fino a 9 posizioni decimali e vengono troncati in modo che corrispondano alla precisione del tipo di risultato.

Impostazioni internazionali: I segnaposto del criterio non sono in grado di riconoscerne le impostazioni locali. I nomi dei mesi e dei giorni sono supportati solo in inglese.

Elenchi di criteri

È possibile passare un elenco di criteri predefinito in base al nome , ad esempio #extended, #iso8601. #unix Sono disponibili gli elenchi di criteri seguenti:

  • comune : modelli comunemente trovati non definiti da uno standard
  • iso8601
  • rfc1036, rfc1123, rfc2822, rfc3164, rfc3339, rfc4287, rfc5322, rfc5424, rfc6265, rfc7231, rfc822, rfc850, rfc9110, rfc9557
  • unix — Solo timestamp dell'epoca Unix
  • esteso — Unione di tutti gli elenchi precedenti; anche il valore predefinito quando non viene specificato alcun criterio
  • extended-dmy - Esteso con formati specifici delle impostazioni locali DMY
  • extended-mdy - Esteso con formati specifici delle impostazioni locali MDY