Перейти к основному содержимому
Перейти к основному содержимому

Time64

Тип данных Time64 позволяет хранить временные значения с точностью до долей секунды. В отличие от DateTime64, он не включает в себя календарную дату, а представляет только время. Точность определяет разрешение хранимых значений в долях секунды.

Размер тика (точность): 10-precision секунд. Допустимый диапазон: [ 0 : 9 ]. Обычно используются - 3 (миллисекунды), 6 (микросекунды), 9 (наносекунды).

Синтаксис:

Time64(precision)

Внутренне Time64 хранит данные как число Int64 тиков с начала суток (000:00:00.000000000). Разрешение тика определяется параметром точности. При желании, временная зона может быть указана на уровне колонки, что влияет на то, как временные значения интерпретируются и отображаются в текстовом формате.

В отличие от DateTime64, Time64 не хранит компонент даты, что означает, что он представляет только время. Подробности смотрите в Time.

Поддерживаемый диапазон значений: [000:00:00, 999:59:59.99999999]

Примеры

  1. Создание таблицы с колонкой типа Time64 и вставка данных в нее:
CREATE TABLE t64
(
    `timestamp` Time64(3),
    `event_id` UInt8
)
ENGINE = TinyLog;
-- Парсинг времени
-- - из целого числа, интерпретируемого как количество секунд с 1970-01-01.
-- - из строки,
INSERT INTO t64 VALUES (15463123, 1), (154600.123, 2), ('100:00:00', 3);

SELECT * FROM t64;
   ┌─────timestamp─┬─event_id─┐
1. │ 004:17:43.123 │        1 │
2. │ 042:56:40.123 │        2 │
3. │ 100:00:00.000 │        3 │
   └───────────────┴──────────┘
  1. Фильтрация по значениям Time64
SELECT * FROM t64 WHERE timestamp = toTime64('100:00:00', 3);
   ┌─────timestamp─┬─event_id─┐
1. │ 100:00:00.000 │        3 │
   └───────────────┴──────────┘

В отличие от Time, значения Time64 не конвертируются из String автоматически.

SELECT * FROM t64 WHERE timestamp = toTime64(154600.123, 3);
   ┌─────timestamp─┬─event_id─┐
1. │ 042:56:40.123 │        2 │
   └───────────────┴──────────┘

В отличие от вставки, функция toTime64 будет рассматривать все значения как десятичный вариант, поэтому точность необходимо указывать после десятичной точки.

  1. Получение временной зоны для значения типа Time64:
SELECT toTime64(now(), 3) AS column, toTypeName(column) AS x;
   ┌────────column─┬─x─────────┐
1. │ 019:14:16.000 │ Time64(3) │
   └───────────────┴───────────┘

Смотрите также