Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a:
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
#iso8601ou#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
NULLvalores, estes são ignorados. Se todos os padrões fornecidos foremNULL, 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
- CANNOT_PARSE_TIMESTAMP
- DATATYPE_MISMATCH. UNEXPECTED_INPUT_TYPE
- INVALID_PARAMETER_VALUE. PADRÃO
- DATATYPE_MISMATCH. NON_FOLDABLE_INPUT
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