O tipo de dado Time representa um horário com componentes de hora, minuto e segundo.
Ele é independente de qualquer data do calendário e é adequado para valores que não exigem componentes de dia, mês e ano.
Sintaxe:
Faixa de representação em texto: [-999:59:59, 999:59:59].
Resolução: 1 segundo.
Detalhes de implementação
Representação e desempenho.
O tipo de dado Time armazena internamente um inteiro com sinal de 32 bits que codifica os segundos.
Valores do tipo Time e DateTime têm o mesmo tamanho em bytes e, portanto, desempenho comparável.
Normalização.
Ao converter strings para Time, os componentes do horário são normalizados, mas não validados.
Por exemplo, 25:70:70 é interpretado como 26:11:10.
Valores negativos.
Sinais de menos à esquerda são aceitos e preservados.
Valores negativos normalmente surgem de operações aritméticas com valores Time.
Para o tipo Time, entradas negativas são preservadas tanto em entradas de texto (por exemplo, '-01:02:03') quanto em entradas numéricas (por exemplo, -3723).
Saturação.
O componente de hora do dia é limitado ao intervalo [-999:59:59, 999:59:59].
Valores com horas acima de 999 (ou abaixo de -999) são representados em texto e convertidos de volta como 999:59:59 (ou -999:59:59).
Fusos horários.
Time não oferece suporte a fusos horários, ou seja, valores Time são interpretados sem contexto regional.
Especificar um fuso horário para Time como parâmetro de tipo ou durante a criação do valor resulta em erro.
Da mesma forma, tentativas de aplicar ou alterar o fuso horário em colunas Time não têm suporte e resultam em erro.
Valores Time não são reinterpretados silenciosamente em fusos horários diferentes.
1. Criando uma tabela com uma coluna do tipo Time e inserindo dados nela:
CREATE TABLE tab
(
`event_id` UInt8,
`time` Time
)
ENGINE = TinyLog;
-- Parse Time
-- - de string,
-- - de inteiro interpretado como número de segundos desde 00:00:00.
INSERT INTO tab VALUES (1, '14:30:25'), (2, 52225);
SELECT * FROM tab ORDER BY event_id;
┌─event_id─┬──────time─┐
1. │ 1 │ 14:30:25 │
2. │ 2 │ 14:30:25 │
└──────────┴───────────┘
2. Filtragem por valores de Time
SET use_legacy_to_time = 0;
SELECT * FROM tab WHERE time = toTime('14:30:25')
┌─event_id─┬──────time─┐
1. │ 1 │ 14:30:25 │
2. │ 2 │ 14:30:25 │
└──────────┴───────────┘
Os valores da coluna Time podem ser filtrados usando um valor textual no predicado WHERE. Ele será convertido para Time automaticamente:
SELECT * FROM tab WHERE time = '14:30:25'
┌─event_id─┬──────time─┐
1. │ 1 │ 14:30:25 │
2. │ 2 │ 14:30:25 │
└──────────┴───────────┘
3. Inspecione o tipo resultante:
SELECT CAST('14:30:25' AS Time) AS column, toTypeName(column) AS type
┌────column─┬─type─┐
1. │ 14:30:25 │ Time │
└───────────┴──────┘
Um valor Time pode ser adicionado a um valor Date ou Date32 para gerar um DateTime ou DateTime64:
SET use_legacy_to_time = 0;
SELECT toDate('2024-07-15') + toTime('14:30:25') as datetime;
┌────────────datetime─┐
1. │ 2024-07-15 14:30:25 │
└─────────────────────┘
Consulte Adição de data e hora para ver detalhes sobre todas as combinações com suporte e os tipos de resultado.
Última modificação em 10 de junho de 2026