Categorias:

Funções de conversão

TRY_TO_TIME

Uma versão especial de TO_TIME , TIME que realiza a mesma operação (ou seja, converte uma expressão de entrada em uma 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.

Consulte também:

TO_TIME , TIME

Sintaxe

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

Argumentos

Obrigatório:

Uma das opções:

string_expr

Esta deve ser uma cadeia de caracteres que pode ser convertida em uma hora válida.

'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 TIME_INPUT_FORMAT (geralmente AUTO).

Retornos

O tipo de dados do valor retornado é TIME.

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

SELECT TRY_TO_TIME('12:30:00'), TRY_TO_TIME('Invalid');
+-------------------------+------------------------+
| TRY_TO_TIME('12:30:00') | TRY_TO_TIME('INVALID') |
|-------------------------+------------------------|
| 12:30:00                | NULL                   |
+-------------------------+------------------------+
Copy