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