Pular para o conteúdo principal
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:
Time
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.

Exemplos

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 │
   └───────────┴──────┘

Adição com Date

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.

Veja também

Última modificação em 10 de junho de 2026