- Categorias:
TO_TIME , TIME¶
Converte uma expressão de entrada em uma hora.
- Consulte também:
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> )
Argumentos¶
Obrigatório:
string_expr
outimestamp_expr
ou'integer'
ouvariant_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'
.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
.A função recebe o número de segundos após a época Unix para esse valor (
31536002
).A função obtém o resto da divisão desse número pelo número de segundos em um dia (
31536002 % 86400
).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');
+---------------------+------------------+
| 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');
+-------------------------+----------------------+
| 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');
+-----------------------------------+
| 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');
SELECT description,
value,
TO_TIMESTAMP(value),
TO_TIME(value)
FROM demo1_time
ORDER BY value;
+--------------+-------------------+-------------------------+----------------+
| 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 |
+--------------+-------------------+-------------------------+----------------+