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

Литерал типа даты

Описание​

В соответствии со стандартом 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