Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

Time

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
-- - from string,
-- - from integer interpreted as number of seconds since 00:00:00.
INSERT INTO tab VALUES (1, '14:30:25'), (2, 52225);

SELECT * FROM tab ORDER BY event_id;
┌─event_id─┬──────time─┐
│        1 │ 14:30:25 │
│        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 │ 14:30:25 │
│        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 │ 14:30:25 │
│        2 │ 14:30:25 │
└──────────┴───────────┘

3. Inspecione o tipo resultante:

SELECT CAST('14:30:25' AS Time) AS column, toTypeName(column) AS type
┌────column─┬─type─┐
│ 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─┐
│ 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

Navigation