Skip to main content
Skip to main content

DateTime

Позволяет хранить момент времени, который может быть представлен как календарная дата и время.

Синтаксис:

Диапазон значений: [1970-01-01 00:00:00, 2106-02-07 06:28:15].

Точность: 1 секунда.

Использование

Момент времени сохраняется как Unix timestamp, независимо от часового пояса и переходов на летнее/зимнее время. Дополнительно, тип DateTime позволяет хранить часовой пояс, единый для всей колонки, который влияет на то, как будут отображаться значения типа DateTime в текстовом виде и как будут парситься значения заданные в виде строк (‘2020-01-01 05:00:01’). Часовой пояс не хранится в строках таблицы (выборки), а хранится в метаданных колонки. Список поддерживаемых часовых поясов можно найти в IANA Time Zone Database или получить из базы данных, выполнив запрос SELECT * FROM system.time_zones. Также список есть в Википедии.

Часовой пояс для столбца типа DateTime можно в явном виде установить при создании таблицы. Если часовой пояс не установлен, то ClickHouse использует значение параметра timezone, установленное в конфигурации сервера или в настройках операционной системы на момент запуска сервера.

Консольный клиент ClickHouse по умолчанию использует часовой пояс сервера, если для значения DateTime часовой пояс не был задан в явном виде при инициализации типа данных. Чтобы использовать часовой пояс клиента, запустите clickhouse-client с параметром --use_client_time_zone.

ClickHouse отображает значения в зависимости от значения параметра date_time_output_format. Текстовый формат по умолчанию YYYY-MM-DD hh:mm:ss. Кроме того, вы можете поменять отображение с помощью функции formatDateTime.

При вставке данных в ClickHouse, можно использовать различные форматы даты и времени в зависимости от значения настройки date_time_input_format.

Примеры

1. Создание таблицы со столбцом типа DateTime и вставка данных в неё:

  • При вставке даты-времени как целого числа, оно трактуется как Unix Timestamp (UTC). Unix timestamp 1546300800 в часовом поясе Europe/London (UTC+0) представляет время '2019-01-01 00:00:00'. Однако, столбец timestamp имеет тип DateTime('Europe/Moscow (UTC+3)'), так что при выводе в виде строки время отобразится как 2019-01-01 03:00:00.
  • При вставке даты-времени в виде строки, время трактуется соответственно часовому поясу установленному для колонки. '2019-01-01 00:00:00' трактуется как время по Москве (и в базу сохраняется 1546290000)

2. Фильтрация по значениям даты-времени

Фильтровать по колонке типа DateTime можно, указывая строковое значение в фильтре WHERE. Конвертация будет выполнена автоматически:

3. Получение часового пояса для колонки типа DateTime:

4. Конвертация часовых поясов

See Also