Partilhar via


parse_timestamp Função

Aplica-se a:sim Databricks Runtime 18.1 e superiores

Se expr for uma cadeia, analisa-a em a TIMESTAMP de acordo com o primeiro padrão correspondente na lista dada de formatos. Um ou mais dos formatos podem referenciar uma lista pré-definida de formatos. Se expr for um tipo numérico, analisa-o como um carimbo temporal Unix.

Sintaxe

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

Argumentos

  • expr: Uma cadeia de caracteres ou valor numérico para analisar num TIMESTAMP. Os tipos aceites são:
    • TINYINT, SMALLINT, INT, BIGINT
    • FLOAT, DOUBLE
    • DECIMAL (até 18 de precisão)
    • STRING
  • padrão: Uma lista opcional de padrões de carimbo temporal ou uma referência a uma lista pré-definida como #iso8601 ou #rfc3339. Os padrões de carimbo temporal devem ser uma cadeia constante. Se nenhum padrão for especificado, é equivalente a especificar #extended.

Devoluções

A TIMESTAMP representa o analisado expr.

Se for expr uma cadeia, ela é analisada de acordo com o primeiro padrão correspondente. Se nenhum dos padrões coincidir, a função gera um erro.

Se for expr numérico, é sempre analisado como um carimbo temporal Unix.

Se expr é NULL, a função devolve NULL.

Para devolver NULL em vez de um erro quando a análise falha, use try_parse_timestamp função.

Notes

  • Se a lista de padrões contiver NULL valores, estes são ignorados. Se todos os padrões fornecidos forem NULL, o resultado é NULL.
  • Se o carimbo temporal corresponder a um padrão que não contém informação sobre fuso horário, é analisado no fuso horário da sessão.

Condições de erro

Exemplos

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

Referência do padrão

parse_timestamp e try_parse_timestamp a função usa um conjunto de padrões que difere em alguns aspetos do padrão de data-hora usado por to_timestamp. A tabela seguinte lista todos os símbolos de padrão e se cada um é suportado:

Symbol Meaning Exemplos Suporte
U UNIX Ver nota abaixo Suportado
G era AD; Anno Domini Não suportado
y ano 2020; 20 Suportado
D dia-do-ano 189 Não suportado
M/L mês-do-ano 7; 07; Jul; Julho Suportado
d dia-do-mês 28 Suportado
Q/q Trimestre-de-Ano 3; 03; 3º; 3º trimestre Não suportado
E dia-da-semana Ter; Terça-feira Suportado
F alinhado dia da semana no mês 3 Não suportado
a am-pm-de-dia da tarde Suportado
h hora-relógio-da-am-pm (1-12) 12 Suportado
K Hora-da-AM-PM (0-11) 0 Suportado
k Hora-relógio do dia (1-24) 1 Não suportado
H Hora-do-dia (0-23) 0 Suportado
m minuto-de-hora 30 Suportado
s segundo-de-minuto 55 Suportado
S fração de segundo 978 Suportado
V ID de fuso horário América/Los_Angeles; Z; -08:30 Suportado
z nome do fuso horário Hora Padrão do Pacífico; PST Suportado
O deslocamento de fuso horário localizado GMT+8; GMT+08:00; UTC-08:00 Suportado
X deslocamento de zona 'Z' para zero Z; -08; -0830; -08:30 Suportado (1-3 dígitos)
x deslocamento de fuso horário +0000; -08; -0830; -08:30 Suportado (1-3 dígitos)
Z deslocamento de fuso horário +0000; -0800; -08:00 Suportado
# Lista de padrões #common, #iso8601 Suportado

Observação

Padrão Unix (U): A #unix lista de padrões analisa os carimbos temporais da época do Unix. Para datas entre 1971-08-03 e 3554-06-09, a implementação pode desambiguar e analisar carimbos temporais Unix em segundos, microssegundos e nanossegundos. Datas fora desse intervalo podem falhar ou analisar incorretamente. Não há suporte para inteiros negativos. Os valores fracionários são suportados até 9 casas decimais e são truncados para corresponder à precisão do tipo de resultado.

Localidade: Os marcadores de padrões não conhecem a localização. Os nomes dos meses e dias são suportados apenas em inglês.

Listas de padrões

Pode passar uma lista de padrões pré-definida pelo nome (por exemplo #extended, , #iso8601, #unix). Estão disponíveis as seguintes listas de moldes:

  • comum — Padrões frequentemente encontrados não definidos por um padrão
  • ISO8601
  • RFC1036, RFC1123, RFC2822, RFC3164, RFC3339, RFC4287, RFC5322,RFC5424, RFC6265,RFC7231,RFC822,RFC850, RFC9110, RFC9557
  • unix — apenas carimbos temporais da época do Unix
  • estendido — União de todas as listas acima; também o padrão quando não é especificado o padrão
  • extended-dmy — Extended com formatos DMY específicos de localidade
  • extended-mdy — Extended com formatos MDY específicos de localidade