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

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

Описание​

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

  • Используйте строку с разделителем - в формате 'YYYY-MM-DD hh:mm:ss' или 'YY-MM-DD hh:mm:ss'. Doris также поддерживает используемые в MySQL нестандартные разделители, однако их использование не рекомендуется. Разделителем между датой и временем может быть пробел ( ) или T. В отличие от MySQL 8.4 и более ранних версий, Doris не поддерживает другие разделители между временем и датой.
  • Для строки без разделителей используйте формат 'YYYYMMDDhhmmss' или 'YYMMDDhhmmss' (при условии, что строка представляет допустимую дату).

Литералы DATETIME могут содержать дробную часть секунды с точностью до микросекунд (шесть цифр). Дробная часть всегда должна отделяться от остальной части времени точкой (.); другие разделители дробной части секунды не распознаются.

Годы, заданные двумя цифрами​

Даты, в которых год задан двумя цифрами, неоднозначны, поскольку век неизвестен. Doris использует следующие правила для интерпретации таких значений года:

  • Значения года в диапазоне 70-99 интерпретируются как годы 1970-1999.
  • Значения года в диапазоне 00-69 интерпретируются как годы 2000-2069.

Часовые пояса​

В литералах DATE, DATETIME и 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