Categorias:

Funções de conversão , Funções de data e hora

TO_TIME , TIME

Converte uma expressão de entrada em uma hora.

Consulte também:

TRY_TO_TIME

Sintaxe

TO_TIME( <string_expr> [, <format> ] )
TO_TIME( <timestamp_expr> )
TO_TIME( '<integer>' )
TO_TIME( <variant_expr> )

TIME( <string_expr> )
TIME( <timestamp_expr> )
TIME( '<integer>' )
TIME( <variant_expr> )
Copy

Argumentos

Obrigatório:

string_expr ou timestamp_expr ou 'integer' ou variant_expr

Expressão a ser convertida em uma hora:

  • Para string_expr, a cadeia de caracteres a ser convertida em hora.

  • Para timestamp_expr, o carimbo de data/hora a ser convertido em hora. A função retorna a parte do tempo do valor de entrada.

  • Para 'integer', uma cadeia de caracteres contendo um inteiro a ser convertida em hora. O inteiro é tratado como um número de segundos, milissegundos, microssegundos ou nanossegundos após o início da época Unix. Consulte as notas de uso.

    Para esse carimbo de data/hora, a função recebe o número de segundos após o início da época Unix. A função realiza uma operação módulo para obter o resto da divisão desse número pelo número de segundos em um dia (86400):

    number_of_seconds % 86400

    A função interpreta esse restante como o número de segundos após a meia-noite.

    Por exemplo, suponha que o valor seja '31536002789'.

    1. Com base na magnitude desse valor, a função usa milissegundos como unidade de tempo e determina que o valor representa 1971-01-01 00:00:02.789.

    2. A função recebe o número de segundos após a época Unix para esse valor (31536002).

    3. A função obtém o resto da divisão desse número pelo número de segundos em um dia (31536002 % 86400).

    4. A função usa o resto (2) como o número de segundos após a meia-noite. O valor resultante é 00:00:02.

  • Para variant_expr:

    • Se a VARIANT contiver uma cadeia de caracteres no formato TIME (como HH:MI:SS), uma conversão da cadeia de caracteres é executada.

    • Se VARIANT contiver uma cadeia de caracteres no formato INTEGER, uma conversão de cadeia de caracteres é realizada e o valor é tratado como o número de segundos desde a meia-noite (módulo 86400, se necessário).

    • Se VARIANT contiver um valor nulo JSON, a saída será NULL.

Para todos os outros valores, é gerado um erro de conversão.

Opcional:

format

Especificador do formato de hora para string_expr ou AUTO, que especifica que o Snowflake detecta automaticamente o formato a ser utilizado. Para obter mais informações, consulte Formatos de data e hora em funções de conversão.

Padrão: o valor atual do parâmetro de sessão TIME_INPUT_FORMAT (padrão AUTO)

Retornos

O tipo de dados do valor retornado é TIME. Se a entrada for NULL, retorna NULL.

Notas de uso

  • O formato de exibição das horas na saída é determinado pelo parâmetro de sessão TIME_OUTPUT_FORMAT (padrão HH24:MI:SS).

  • Se o formato do parâmetro de entrada for uma cadeia de caracteres que contenha um número inteiro, a unidade de medida do valor (segundos, microssegundos, milissegundos ou nanossegundos) será determinada da seguinte forma:

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

  • Ao contrário da função TO_TIME, a função TIME não oferece suporte ao parâmetro opcional format.

Exemplos

Esses exemplos usam as funções TO_TIME e TIME.

SELECT TO_TIME('13:30:00'), TIME('13:30:00');
Copy
+---------------------+------------------+
| TO_TIME('13:30:00') | TIME('13:30:00') |
|---------------------+------------------|
| 13:30:00            | 13:30:00         |
+---------------------+------------------+
SELECT TO_TIME('13:30:00.000'), TIME('13:30:00.000');
Copy
+-------------------------+----------------------+
| TO_TIME('13:30:00.000') | TIME('13:30:00.000') |
|-------------------------+----------------------|
| 13:30:00                | 13:30:00             |
+-------------------------+----------------------+

Este exemplo mostra como usar a função TO_TIME para processar separadores de campo diferentes dos dois pontos padrão. O exemplo usa o caractere de ponto como separador entre horas e minutos, e entre minutos e segundos:

SELECT TO_TIME('11.15.00', 'HH24.MI.SS');
Copy
+-----------------------------------+
| TO_TIME('11.15.00', 'HH24.MI.SS') |
|-----------------------------------|
| 11:15:00                          |
+-----------------------------------+

Este exemplo demonstra como a função TO_TIME interpreta uma cadeia de caracteres contendo um inteiro:

CREATE OR REPLACE TABLE demo1_time (
  description VARCHAR,
  value VARCHAR -- string rather than bigint
);

INSERT INTO demo1_time (description, value) VALUES
  ('Seconds',      '31536001'),
  ('Milliseconds', '31536002400'),
  ('Microseconds', '31536003600000'),
  ('Nanoseconds',  '31536004900000000');
Copy
SELECT description,
       value,
       TO_TIMESTAMP(value),
       TO_TIME(value)
  FROM demo1_time
  ORDER BY value;
Copy
+--------------+-------------------+-------------------------+----------------+
| DESCRIPTION  | VALUE             | TO_TIMESTAMP(VALUE)     | TO_TIME(VALUE) |
|--------------+-------------------+-------------------------+----------------|
| Seconds      | 31536001          | 1971-01-01 00:00:01.000 | 00:00:01       |
| Milliseconds | 31536002400       | 1971-01-01 00:00:02.400 | 00:00:02       |
| Microseconds | 31536003600000    | 1971-01-01 00:00:03.600 | 00:00:03       |
| Nanoseconds  | 31536004900000000 | 1971-01-01 00:00:04.900 | 00:00:04       |
+--------------+-------------------+-------------------------+----------------+