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

O argumento deve ser uma cadeia de caracteres que possa ser avaliada comoTIMESTAMP (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 as Notas de uso abaixo.

Nota

O uso de números inteiros cotados como entradas é obsoleto.

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

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

      Cuidado

      Atualmente, valores negativos são sempre tratados como segundos. Por exemplo, -31536000000000000000 é tratado como um número de segundos antes do ano 1970, embora sua escala implique que ele se destina a ser usado como nanossegundos.

      Este comportamento pode mudar no futuro.

      Nota

      Aviso de descontinuação: Versões futuras do Snowflake podem interpretar automaticamente valores inteiros de cadeia de caracteres como segundos, em vez de milissegundos, microssegundos ou nanossegundos. O Snowflake recomenda chamar TO_DATE, TO_TIME ou TO_TIMESTAMP com cadeias de caracteres que contenham inteiros somente quando esses inteiros devam ser interpretados como segundos.

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

Exemplos

Isso demonstra o uso de TRY_TO_TIMESTAMP:

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