Перейти к основному содержанию
Тип данных Time64 представляет время суток с дробной частью секунды. Он не содержит календарных составляющих даты (дня, месяца, года). Параметр precision определяет количество дробных знаков и, следовательно, шаг. Шаг (precision): 10-precision секунд. Допустимый диапазон: 0..9. Обычно используются значения 3 (миллисекунды), 6 (микросекунды) и 9 (наносекунды). Синтаксис:
Time64(precision)
Внутри Time64 хранит знаковое 64-битное десятичное число (Decimal64), представляющее дробное количество секунд. Разрешение тиков определяется параметром precision. Часовые пояса не поддерживаются: указание часового пояса для Time64 вызовет ошибку. В отличие от DateTime64, Time64 не хранит компонент даты. См. также Time. Диапазон текстового представления: [-999:59:59.000, 999:59:59.999] для precision = 3. В общем случае минимальное значение — -999:59:59, а максимальное — 999:59:59, с количеством цифр в дробной части до precision (для precision = 9 минимальное значение равно -999:59:59.999999999).

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

Представление. Знаковое значение Decimal64, хранящее количество долей секунды с precision знаками после запятой. Нормализация. При разборе строк в Time64 компоненты времени нормализуются, а не проверяются на корректность. Например, 25:70:70 интерпретируется как 26:11:10. Отрицательные значения. Поддерживаются и сохраняются ведущие знаки минус. Отрицательные значения обычно возникают в результате арифметических операций со значениями Time64. Для Time64 отрицательные входные значения сохраняются как для текстовых входных данных (например, '-01:02:03.123'), так и для числовых (например, -3723.123). Насыщение. Компонент времени суток ограничивается диапазоном [-999:59:59.xxx, 999:59:59.xxx] при преобразовании в компоненты или сериализации в текст. Сохранённое числовое значение может выходить за пределы этого диапазона; однако при любом извлечении компонентов (часы, минуты, секунды) и в текстовом представлении используется значение с учётом этого ограничения. Часовые пояса. Time64 не поддерживает часовые пояса. Указание часового пояса при создании типа или значения Time64 вызывает ошибку. Аналогично, попытки применить или изменить часовой пояс для столбцов Time64 не поддерживаются и также приводят к ошибке.

Примеры

  1. Создание таблицы со столбцом типа Time64 и вставка данных в неё:
CREATE TABLE tab64
(
    `event_id` UInt8,
    `time` Time64(3)
)
ENGINE = TinyLog;
-- Разобрать Time64
-- - из строки,
-- - из количества секунд с 00:00:00 (дробная часть согласно precision).
INSERT INTO tab64 VALUES (1, '14:30:25'), (2, 52225.123), (3, '14:30:25');

SELECT * FROM tab64 ORDER BY event_id;
   ┌─event_id─┬────────time─┐
1. │        1 │ 14:30:25.000 │
2. │        2 │ 14:30:25.123 │
3. │        3 │ 14:30:25.000 │
   └──────────┴──────────────┘
  1. Фильтрация значений Time64
SELECT * FROM tab64 WHERE time = toTime64('14:30:25', 3);
   ┌─event_id─┬────────time─┐
1. │        1 │ 14:30:25.000 │
2. │        3 │ 14:30:25.000 │
   └──────────┴──────────────┘
SELECT * FROM tab64 WHERE time = toTime64(52225.123, 3);
   ┌─event_id─┬────────time─┐
1. │        2 │ 14:30:25.123 │
   └──────────┴──────────────┘
Примечание: toTime64 разбирает числовые литералы как секунды с дробной частью в соответствии с указанной precision, поэтому явно указывайте нужное количество знаков после запятой.
  1. Проверка итогового типа:
SELECT CAST('14:30:25.250' AS Time64(3)) AS column, toTypeName(column) AS type;
   ┌────────column─┬─type──────┐
1. │ 14:30:25.250 │ Time64(3) │
   └───────────────┴───────────┘

Сложение с Date

Значение Time64 можно прибавить к значению Date или Date32, чтобы получить DateTime64 с тем же scale, что и у Time64:
SET use_legacy_to_time = 0;
SELECT toDate('2024-07-15') + toTime64('14:30:25.123456', 6) AS dt, toTypeName(dt);
   ┌─────────────────────────dt─┬─toTypeName(dt)─┐
1. │ 2024-07-15 14:30:25.123456 │ DateTime64(6)  │
   └────────────────────────────┴────────────────┘
См. Сложение даты и времени, где приведены подробные сведения обо всех поддерживаемых комбинациях и типах результатов. См. также
Последнее изменение 10 июня 2026 г.