Перейти к основному содержанию
Тип данных Time представляет время, состоящее из часов, минут и секунд. Он не привязан к какой-либо календарной дате и подходит для значений, которым не нужны компоненты дня, месяца и года. Синтаксис:
Time
Диапазон текстового представления: [-999:59:59, 999:59:59]. Разрешение: 1 секунда.

Подробности реализации

Представление и производительность. Тип данных Time внутри хранится как знаковое 32-битное целое число, кодирующее секунды. Значения типов Time и DateTime имеют одинаковый размер в байтах и, следовательно, сопоставимую производительность. Нормализация. При разборе строк в Time компоненты времени нормализуются, а не проверяются на корректность. Например, 25:70:70 интерпретируется как 26:11:10. Отрицательные значения. Ведущий знак минус поддерживается и сохраняется. Отрицательные значения обычно возникают в результате арифметических операций со значениями Time. Для типа Time отрицательные входные значения сохраняются как для текстового представления (например, '-01:02:03'), так и для числового (например, -3723). Насыщение. Компонент времени в пределах суток ограничивается диапазоном [-999:59:59, 999:59:59]. Значения с часами больше 999 (или меньше -999) представляются и преобразуются обратно в текстовом виде как 999:59:59 (или -999:59:59). Часовые пояса. Time не поддерживает часовые пояса, то есть значения Time интерпретируются без привязки к региону. Указание часового пояса для Time в качестве параметра типа или при создании значения вызывает ошибку. Аналогично, попытки применить или изменить часовой пояс для столбцов Time не поддерживаются и приводят к ошибке. Значения Time не переинтерпретируются неявно при использовании разных часовых поясов.

Примеры

1. Создание таблицы со столбцом типа Time и вставка данных в неё:
CREATE TABLE tab
(
    `event_id` UInt8,
    `time` Time
)
ENGINE = TinyLog;
-- Разобрать Time
-- - из строки,
-- - из целого числа, интерпретируемого как количество секунд с 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. Фильтрация по значениям поля 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 │
   └──────────┴───────────┘
Значения столбца Time можно фильтровать, используя строковое значение в предикате WHERE. Оно будет автоматически преобразовано в Time:
SELECT * FROM tab WHERE time = '14:30:25'
   ┌─event_id─┬──────time─┐
1. │        1 │ 14:30:25 │
2. │        2 │ 14:30:25 │
   └──────────┴───────────┘
3. Проверка итогового типа:
SELECT CAST('14:30:25' AS Time) AS column, toTypeName(column) AS type
   ┌────column─┬─type─┐
1. │ 14:30:25 │ Time │
   └───────────┴──────┘

Сложение с Date

Значение время можно прибавить к значению Date или Date32, чтобы получить DateTime или 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 │
   └─────────────────────┘
См. Сложение даты и времени, где подробнее описаны все поддерживаемые комбинации и типы результатов.

См. также

Последнее изменение 10 июня 2026 г.