Литералы дат и времени
Стандартные синтаксисы
MariaDB поддерживает стандарт SQL и синтаксис ODBC для литералов DATE, TIME и TIMESTAMP.
Синтаксис стандарта SQL:
- DATE 'строка'
- TIME 'строка'
- TIMESTAMP 'строка'
Синтаксис ODBC:
- {d 'строка'}
- {t 'строка'}
- {ts 'строка'}
Литералы timestamp обрабатываются как литералы DATETIME, так как в MariaDB диапазон DATETIME ближе к диапазону TIMESTAMP в стандарте SQL.
string — это строка в правильном формате, как поясняется ниже.
DATE литералы
Строка DATE — это строка в одном из следующих форматов: 'YYYY-MM-DD' или 'YY-MM-DD'. Обратите внимание, что любой знак препинания может использоваться в качестве разделителя. Все разделители должны состоять из 1 символа. В одной строке можно использовать разные разделители. Разделители необязательны (но если используется один разделитель, то все разделители должны быть использованы).
Литерал DATE также может быть целым числом в одном из следующих форматов: YYYYMMDD или YYMMDD.
Все следующие DATE литералы допустимы, и все они представляют одну и ту же величину:
'19940101' '940101' '1994-01-01' '94/01/01' '1994-01/01' '94:01!01' 19940101 940101
DATETIME литералы
Строка DATETIME — это строка в одном из следующих форматов: 'YYYY-MM-DD HH:MM:SS' или 'YY-MM-DD HH:MM:SS'. Обратите внимание, что любой знак препинания может использоваться в качестве разделителя для части даты и для части времени. Все разделители должны состоять из 1 символа. В одной строке можно использовать разные разделители. Части часов, минут и секунд могут состоять из одного символа. По этой причине разделители обязательны для литералов DATETIME.
Разделитель между частью даты и частью времени может быть T или любой последовательностью пробельных символов (включая табуляцию, новые строки и символы возврата каретки).
Литерал DATETIME также может быть числом в одном из следующих форматов: YYYYMMDDHHMMSS, YYMMDDHHMMSS, YYYYMMDD или YYMMDD. В этом случае все подчасти времени должны состоять из 2 цифр.
Все следующие DATE литералы допустимы, и все они представляют одну и ту же величину:
'1994-01-01T12:30:03' '1994/01/01\n\t 12+30+03' '1994/01\\01\n\t 12+30-03' '1994-01-01 12:30:3'
TIME литералы
Строка TIME — это строка в одном из следующих форматов: 'D HH:MM:SS', 'HH:MM:SS, 'D HH:MM', 'HH:MM', 'D HH', или 'SS'. D — это значение от 0 до 34, которое представляет дни. : — единственный разрешенный разделитель для литералов TIME. Разделители обязательны, за исключением формата 'HHMMSS'. Когда используются разделители, каждая часть литерала может состоять из одного символа.
Литерал TIME также может быть числом в одном из следующих форматов: HHMMSS, MMSS, или SS.
Следующие литералы эквивалентны:
'09:05:00' '9:05:0' '9:5:0' '090500'
Двухзначные годы
Часть года в литералах DATE и DATETIME определяется следующим образом:
-
70-99=1970-1999 -
00-69=2000-2069
Микросекунды
Литералы DATETIME и TIME могут иметь необязательную часть микросекунд. В обоих строчных и числовых формах она выражается как десятичная часть. Разрешено до 6 десятичных знаков. Примеры:
'12:30:00.123456' 123000.123456
Подробности см. в Микросекунды в MariaDB.
Литералы дат и времени и SQL_MODE
Если флаг SQL_MODE NO_ZERO_DATE не установлен, разрешены некоторые специальные значения: '0000-00-00' DATE, '00:00:00' TIME, и 0000-00-00 00:00:00 DATETIME.
Если установлен флаг ALLOW_INVALID_DATES, допустимы некорректные даты (например, 30 февраля). Если нет, если установлен NO_ZERO_DATE, генерируется ошибка; в противном случае возвращается нулевая дата.
Если флаг NO_ZERO_IN_DATE не установлен, каждая часть значения даты или времени (год, час и т. д.) может быть установлена в 0.
См. также
© 2023 MariaDB
Licensed under the Creative Commons Attribution 3.0 Unported License and the GNU Free Documentation License.
https://mariadb.com/kb/en/date-and-time-literals/