* DOCAPI-4146: Updated examples. * DOCAPI-4146: Fix. * DOCAPI-4146: Clarifications about dictionaries. * Update datetime.md (#69) * DOCAPI-4146: EN review, RU translation * DOCAPI-4146: Fix. * DOCAPI-4146: Attempted to clarify. * DOCAPI-4146: More clarifications * DOCAPI-4146: Extended example. * Update docs/en/data_types/datetime.md Co-Authored-By: Ivan Blinkov <github@blinkov.ru> * Update docs/en/data_types/datetime.md Co-Authored-By: Ivan Blinkov <github@blinkov.ru> * Update docs/en/data_types/datetime.md Co-Authored-By: Ivan Blinkov <github@blinkov.ru> * Fix. * DOCAPI-4146: Clarifications and fixes. Co-authored-by: FeehanG <51821376+FeehanG@users.noreply.github.com> Co-authored-by: Ivan Blinkov <github@blinkov.ru>
5.5 KiB
DateTime
Позволяет хранить момент времени, который может быть представлен как календарная дата и время. DateTime
позволяет учесть часовой пояс для хранимых значений.
Синтаксис:
DateTime([timezone])
Диапазон значений: [1970-01-01 00:00:00, 2105-12-31 23:59:59].
Точность: 1 секунда.
Использование
Момент времени сохраняется как Unix timestamp, независимо от часового пояса и переходов на летнее/зимнее время. Дополнительно, DateTime
позволяет хранить часовой пояс, который влияет на то, как буду отображаться значения типа DateTime
в текстовом виде и как будут парситься входные строки. Список поддержанных временных зон можно найти в IANA Time Zone Database.
Часовой пояс для столбца типа DateTime
можно в явном виде установить при создании таблицы. Если часовой пояс не установлен, то ClickHouse использует значение параметра timezone, установленное в конфигурации сервера или в настройках операционной системы на момент запуска сервера.
Консольный клиент ClickHouse по умолчанию использует часовой пояс сервера, если для значения DateTime
часовой пояс не был задан в явном виде при инициализации типа данных. Чтобы использовать часовой пояс клиента, запустите clickhouse-client с параметром --use_client_time_zone
.
ClickHouse по умолчанию выводит значение в формате YYYY-MM-DD hh:mm:ss
. Формат можно поменять с помощь функции formatDateTime.
При вставке данных в ClickHouse, можно использовать различные форматы даты и времени в зависимости от значения настройки date_time_input_format.
Примеры
1. Создание таблицы с столбцом типа DateTime
и вставка данных в неё:
CREATE TABLE dt
(
timestamp
DateTime('Europe/Moscow'),
event_id
UInt8
)
ENGINE = TinyLog
```sql
INSERT INTO dt Values (1546300800, 1), ('2019-01-01 00:00:00', 2)
SELECT * FROM dt
┌───────────timestamp─┬─event_id─┐
│ 2019-01-01 03:00:00 │ 1 │
│ 2019-01-01 00:00:00 │ 2 │
└─────────────────────┴──────────┘
Unix timestamp 1546300800
в часовом поясе Europe/London (UTC+0)
представляет время '2019-01-01 00:00:00'
, однако столбец timestamp
хранит время в часовом поясе Europe/Moscow (UTC+3)
, таким образом значение, вставленное в виде Unix timestamp, представляет время 2019-01-01 03:00:00
.
SELECT * FROM dt WHERE timestamp = toDateTime('2019-01-01 00:00:00', 'Europe/Moscow')
┌───────────timestamp─┬─event_id─┐
│ 2019-01-01 00:00:00 │ 2 │
└─────────────────────┴──────────┘
2. Получение часового пояса для значения типа DateTime
:
SELECT toDateTime(now(), 'Europe/Moscow') AS column, toTypeName(column) AS x
┌──────────────column─┬─x─────────────────────────┐
│ 2019-10-16 04:12:04 │ DateTime('Europe/Moscow') │
└─────────────────────┴───────────────────────────┘