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

DATE

Описание​

Тип DATE хранит даты в диапазоне [0000-01-01, 9999-12-31], за исключением 0000-02-29. Формат вывода по умолчанию — 'yyyy-MM-dd'.

Doris использует правила григорианского календаря, где год 0000 соответствует 1 году до н. э. (BCE 1). Особая граничная дата 0000-02-29 не поддерживается.

Начиная с версии 4.1.5, в преобразованиях между DATE и числом дней от начала эпохи (epoch-day) для Arrow, Parquet и ORC V2 исправлено смещение для первых двух месяцев нулевого года. Автоматически распознать файлы, использующие прежнее кодирование Doris, невозможно. Для файлов с датами от 0000-01-01 до 0000-02-28 определите, каким ПО они были записаны, и выполните миграцию, как описано в руководстве по обновлению.

Тип DATE можно использовать для первичного ключа, столбца партиционирования или столбца бакетирования. Поле типа DATE фактически занимает в Doris 4 байта. Во время выполнения DATE хранится в виде отдельных значений года, месяца и дня, поэтому операция months_add над столбцом DATE выполняется эффективнее, чем unix_timestamp.

О преобразовании других типов в DATE и допустимых входных значениях при таком преобразовании см. Преобразование в DATE.

Типы даты и времени не поддерживают прямое выполнение арифметических операций с помощью математических операторов. При выполнении математических операций типы даты и времени сначала неявно преобразуются в числовые типы, после чего выполняется сама операция. Для сложения, вычитания или округления значений временных типов можно использовать такие функции, как DATE_ADD, DATE_SUB, TIMESTAMPDIFF, DATE_TRUNC.

Тип DATE не хранит часовой пояс, то есть изменения переменной сеанса time_zone не влияют на сохранённые значения типа DATE.

Примеры​

select cast('2020-01-02' as date);
+----------------------------+
| cast('2020-01-02' as date) |
+----------------------------+
| 2020-01-02 |
+----------------------------+
select cast('0120-02-29' as date);
+----------------------------+
| cast('0120-02-29' as date) |
+----------------------------+
| 0120-02-29 |
+----------------------------+