Compartilhar via


parse_timestamp Função

Aplica-se a:check marked yes Databricks Runtime 18.1 e superior

Se expr for uma cadeia de caracteres, analise-a de TIMESTAMP acordo com o primeiro padrão de correspondência na lista de formatos fornecida. Um ou mais dos formatos podem referenciar uma lista predefinida de formatos. Se expr for um tipo numérico, analise-o como um carimbo de data/hora Unix.

Sintaxe

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

Argumentos

  • expr: um valor numérico ou de cadeia de caracteres a ser analisado em um TIMESTAMP. Os tipos aceitos são:
    • TINYINT, SMALLINT, , INTBIGINT
    • FLOAT, DOUBLE
    • DECIMAL (até 18 precisão)
    • STRING
  • padrão: uma lista opcional de padrões de carimbo de data/hora ou uma referência a uma lista predefinida, como #iso8601 ou #rfc3339. Os padrões de carimbo de data/hora devem ser uma cadeia de caracteres constante. Se nenhum padrão for especificado, será equivalente a especificar #extended.

Devoluções

Um TIMESTAMP que representa o analisado expr.

Se for expr uma cadeia de caracteres, ela será analisada de acordo com o primeiro padrão de correspondência. Se nenhum dos padrões corresponder, a função gerará um erro.

Se for expr numérico, ele sempre será analisado como um carimbo de data/hora unix.

Se expr for NULL, a função retorna NULL.

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

Observações

  • Se a lista de padrões contiver NULL valores, eles serão ignorados. Se todos os padrões fornecidos forem NULL, o resultado será NULL.
  • Se o carimbo de data/hora corresponder a um padrão que não contém informações de fuso horário, ele será 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 de padrão

parse_timestamp e try_parse_timestamp a função usam um conjunto de padrões que difere de algumas maneiras do padrão de datetime usado por to_timestamp. A tabela a seguir lista todos os símbolos de padrão e se cada um tem suporte:

Símbolo Meaning Exemplos Suporte
U Unix Veja a observação abaixo Supported
G era DC; Depois de Cristo Sem suporte
y ano 2020; 20 Supported
D dia do ano 189 Sem suporte
M/L mês do ano 7; 07; Jul; Julho Supported
d dia do mês 28 Supported
P/q trimestre do ano 3; 03; T3; 3º trimestre Sem suporte
E day_of_week Ter; Terça-feira Supported
F dia de semana alinhado no mês 3 Sem suporte
a am-pm-do-dia PM Supported
h hora-do-relógio-de-am-pm (1-12) 12 Supported
K hora-of-am-pm (0-11) 0 Supported
k relógio-hora do dia (1-24) 1 Sem suporte
H hora do dia (0-23) 0 Supported
m minuto da hora 30 Supported
s segundo de minuto 55 Supported
S fração de segundo 978 Supported
V ID do fuso horário América/Los_Angeles; Z; -08:30 Supported
z nome da time-zone Hora Oficial do Pacífico; PST Supported
O zone-offset localizada GMT+8; GMT+08:00; UTC-08:00 Supported
X deslocamento de zona 'Z' para zero Z; -08; -0830; -08:30 Com suporte (1 a 3 dígitos)
x deslocamento de zona +0000; -08; -0830; -08:30 Com suporte (1 a 3 dígitos)
Z deslocamento de zona +0000; -0800; -08:00 Supported
# lista de padrões #common, #iso8601 Supported

Observação

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

Localidade: Os espaços reservados de padrão não estão cientes da localidade. Os nomes de mês e dia têm suporte apenas em inglês.

Listas de padrões

Você pode passar uma lista de padrões predefinida por nome (por exemplo#extended, , #iso8601). #unix As seguintes listas de padrões estão disponíveis:

  • comum – padrões comumente encontrados não definidos por um padrão
  • iso8601
  • rfc1036, rfc1123, rfc2822, rfc3164, rfc3339, rfc4287, rfc5322, rfc5424, rfc6265, rfc7231, rfc822, rfc850, rfc9110, rfc9557
  • unix — Unix epoch timestamps only
  • estendido – União de todas as listas acima; também o padrão quando nenhum padrão é especificado
  • extended-dmy — Estendido com formatos específicos da localidade DMY
  • extended-mdy — estendido com formatos específicos da localidade do MDY