Литерал типа даты
Описание
В соответствии со стандартом SQL Doris требует использовать ключевые слова типов и строки для задания литералов даты. Пробел между ключевым словом и строкой необязателен. Например:
DATE '2008-08-08'
TIMESTAMP '2008-08-08 20:08:08'
Форматы даты
Литерал DATE
- Используйте строку с разделителем
-в формате'YYYY-MM-DD'или'YY-MM-DD'. Doris также поддерживает нестандартные форматы разделителей MySQL, но их использование не рекомендуется. - Для строки без разделителей используйте формат
'YYYYMMDD'или'YYMMDD'(при условии, что строка представляет допустимую дату).
Литералы DATETIME, TIMESTAMP_NS и TIMESTAMPTZ
- Используйте строку с разделителем
-в формате'YYYY-MM-DD hh:mm:ss'или'YY-MM-DD hh:mm:ss'. Doris также поддерживает нестандартные форматы разделителей MySQL, но их использование не рекомендуется. Разделителем между датой и временем может быть пробел () илиT. В отличие от MySQL 8.4 и более ранних версий, Doris не поддерживает другие разделители между временем и датой. - Для строки без разделителей используйте формат
'YYYYMMDDhhmmss'или'YYMMDDhhmmss'(при условии, что строка представляет допустимую дату).
Литералы даты и времени могут включать дробную часть секунды. DATETIME и TIMESTAMPTZ сохраняют до шести цифр (микросекунды), а TIMESTAMP_NS — девять цифр (наносекунды). Лишние цифры округляются до точности целевого типа. Дробная часть должна отделяться от остальной части времени точкой (.); другие разделители дробной части секунды не распознаются.
Двузначные значения года
Даты с двузначным значением года неоднозначны, поскольку век неизвестен. Doris использует следующие правила для интерпретации двузначных значений года:
- Значения года в диапазоне 70-99 интерпретируются как годы 1970-1999.
- Значения года в диапазоне 00-69 интерпретируются как годы 2000-2069.
Часовые пояса
Литералы DATE, DATETIME, TIMESTAMP_NS и TIMESTAMPTZ могут содержать суффиксы часового пояса. Часовой пояс должен следовать непосредственно за предшествующей частью даты или времени, без пробелов. Например:
TIMESTAMP '2008-08-08 20:08:08+08:00'
Doris поддерживает следующие форматы часовых поясов:
- Смещение часового пояса: формат
{+ | -}hh:mm. Например, для UTC+8 это+08:00. - Название часового пояса. Например, часовой пояс Шанхая —
Asia/Shanghai.
Обработка недопустимых значений
При обнаружении значений, которые невозможно разобрать как допустимые литералы даты, Doris сразу сообщает об ошибке. Например:
SELECT date '071332'
Это приведёт к следующей ошибке:
date/datetime literal [071332] is invalid