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 |
+----------------------------+