Categorias:

Funções de conversão

TRY_TO_TIMESTAMP / TRY_TO_TIMESTAMP_*

Uma versão especial de TO_TIMESTAMP / TO_TIMESTAMP_* que realiza a mesma operação (ou seja, converte uma expressão de entrada em um carimbo de data/hora), mas com suporte de tratamento de erros (ou seja, se a conversão não puder ser realizada, ela retorna um valor NULL em vez de acusar um erro).

Para obter mais informações, consulte Funções de conversão de tratamento de erros.

Nota

TRY_TO_TIMESTAMP faz o mapeamento para uma das outras funções de carimbo de data/hora, com base no parâmetro de sessão TIMESTAMP_TYPE_MAPPING. O parâmetro padrão é TIMESTAMP_NTZ, de forma que TRY_TO_TIMESTAMP faz o mapeamento para TRY_TO_TIMESTAMP_NTZ por padrão.

Consulte também:

TO_TIMESTAMP / TO_TIMESTAMP_*

Sintaxe

timestampFunction ( <string_expr> [, <format> ] )
timestampFunction ( '<integer>' )
Copy

Onde:

timestampFunction ::=
    TRY_TO_TIMESTAMP | TRY_TO_TIMESTAMP_LTZ | TRY_TO_TIMESTAMP_NTZ | TRY_TO_TIMESTAMP_TZ
Copy

Argumentos

Obrigatório:

Uma das opções:

string_expr

Uma cadeia de caracteres que possa ser avaliada como TIMESTAMP (TIMESTAMP_NTZ, TIMESTAMP_LTZ ou TIMESTAMP_TZ).

'integer'

Uma expressão que avalia como uma cadeia de caracteres contendo um número inteiro, por exemplo '15000000'. Dependendo da magnitude da cadeia de caracteres, ela pode ser interpretada como segundos, milissegundos, microssegundos ou nanossegundos. Para obter mais detalhes, consulte notas de uso.

Opcional:

format

Especificador de formato para string_expr ou AUTO. Para obter mais informações, consulte Formatos de data e hora em funções de conversão.

O valor padrão é o valor atual do parâmetro de sessão TIMESTAMP_INPUT_FORMAT (padrão AUTO).

Retornos

O tipo de dados do valor retornado é um dos tipos de dados de TIMESTAMP. Por padrão, o tipo de dados é TIMESTAMP_NTZ. Você pode alterar isso definindo o parâmetro de sessão TIMESTAMP_TYPE_MAPPING.

Notas de uso

  • Para carimbos de data/hora com fuso horário, o ajuste do parâmetro TIMEZONE afeta o valor de retorno. O carimbo de data/hora retornado está no fuso horário da sessão.

  • O formato de exibição dos carimbos de data/hora na saída é determinado pelo formato de saída do registro de data e hora que corresponde à função (TIMESTAMP_OUTPUT_FORMAT, TIMESTAMP_LTZ_OUTPUT_FORMAT, TIMESTAMP_NTZ_OUTPUT_FORMAT ou TIMESTAMP_TZ_OUTPUT_FORMAT).

  • Se o formato do parâmetro de entrada for uma cadeia de caracteres que contenha um número inteiro:

    • Depois que a cadeia de caracteres é convertida em um inteiro, o inteiro é tratado como um número de segundos, milissegundos, microssegundos ou nanossegundos após o início da época Unix (1970-01-01 00:00:00.000000000 UTC).

      • Se o número inteiro for inferior a 31536000000 (o número de milissegundos em um ano), então o valor é tratado como um número de segundos.

      • Se o valor for maior ou igual a 31536000000 e menor que 31536000000000, então o valor é tratado como milissegundos.

      • Se o valor for maior ou igual a 31536000000000 e menor que 31536000000000000, então o valor é tratado como microssegundos.

      • Se o valor for maior ou igual a 31536000000000000, então o valor é tratado como nanossegundos.

    • Se mais de uma linha for avaliada (por exemplo, se a entrada for o nome da coluna de uma tabela que contém mais de uma linha), cada valor será examinado independentemente para determinar se o valor representa segundos, milissegundos, microssegundos ou nanossegundos.

  • Quando você usa a função TO_TIMESTAMP_NTZ ou TRY_TO_TIMESTAMP_NTZ para converter um carimbo de data/hora com informações de fuso horário, as informações de fuso horário são perdidas. Se o carimbo de data/hora for então convertido novamente em um carimbo de data/hora com informações de fuso horário (usando a função TO_TIMESTAMP_TZ, por exemplo), as informações de fuso horário não são recuperáveis.

Exemplos

Este exemplo usa TRY_TO_TIMESTAMP:

SELECT TRY_TO_TIMESTAMP('2024-01-15 12:30:00'), TRY_TO_TIMESTAMP('Invalid');
Copy
+-----------------------------------------+-----------------------------+
| TRY_TO_TIMESTAMP('2024-01-15 12:30:00') | TRY_TO_TIMESTAMP('INVALID') |
|-----------------------------------------+-----------------------------|
| 2024-01-15 12:30:00.000                 | NULL                        |
+-----------------------------------------+-----------------------------+

Consulte TO_TIMESTAMP / TO_TIMESTAMP_* para exemplos que convertem uma expressão de entrada em um carimbo de data/hora.