Spec-Zone .ru
спецификации, руководства, описания, API

9.1.3. Дата и Литералы Времени

Дата и временные стоимости могут быть представлены в нескольких форматах, таких как заключенные в кавычки строки или как числа, в зависимости от точного типа значения и других факторов. Например, в контекстах, где MySQL ожидает дату, он интерпретирует любой из '2015-07-21', '20150721', и 20150721 как дата.

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

Стандартный SQL и Литералы Даты и Времени ODBC. Стандартный SQL разрешает временным литералам быть определенными, используя ключевое слово типа и строку. Пространство между ключевым словом и строкой является дополнительным.

DATE 'str'TIME 'str'TIMESTAMP 'str'

MySQL распознает те конструкции и также соответствующий синтаксис ODBC:

{ d 'str' }{ t 'str' }{ ts 'str' }

Перед MySQL 5.6.4 MySQL игнорирует ключевое слово типа, и каждая из предыдущих конструкций производит строковое значение 'str', с типом VARCHAR.

С 5.6.4, MySQL использует ключевое слово типа, и эти конструкции производят DATE, TIME, и DATETIME значения, соответственно, включая запаздывающую часть долей секунды если определено. TIMESTAMP синтаксис производит a DATETIME значение в MySQL, потому что DATETIME имеет диапазон, который более близко соответствует стандартному SQL TIMESTAMP введите, у которого есть диапазон года от 0001 к 9999. (MySQL TIMESTAMP диапазон года 1970 к 2038.)

Строка и Числовые Литералы в Контексте Даты и Времени. MySQL распознает DATE значения в этих форматах:

MySQL распознает DATETIME и TIMESTAMP значения в этих форматах:

A DATETIME или TIMESTAMP значение может включать запаздывающую часть долей секунды в до микросекунд (6 цифр) точность. Для получения информации о поддержке долей секунды в MySQL см. Раздел 11.3.6, "Доли секунды во Временных стоимостях".

Даты, содержащие двухразрядные значения года, неоднозначны, потому что столетие неизвестно. MySQL интерпретирует двухразрядные значения года, используя эти правила:

См. также Раздел 11.3.8, "Двухразрядные Годы в Датах".

Для значений, определенных как строки, которые включают разделители части даты, является ненужным определить две цифры для значений месяца или дня, которые являются меньше чем 10. '2015-6-9' то же самое как '2015-06-09'. Точно так же для значений, определенных как строки, которые включают разделители части времени, является ненужным определить две цифры в течение часа, минуты, или вторых значений, которые являются меньше чем 10. '2015-10-30 1:2:3' то же самое как '2015-10-30 01:02:03'.

Значения, определенные как числа, должны быть 6, 8, 12, или 14 цифр долго. Если число является 8 или 14 цифрами долго, оно, как предполагается, находится в YYYYMMDD или YYYYMMDDHHMMSS формат и что год дается первыми 4 цифрами. Если число является 6 или 12 цифрами долго, оно, как предполагается, находится в YYMMDD или YYMMDDHHMMSS формат и что год дается первыми 2 цифрами. Числа, которые не являются одной из этих длин, интерпретируются как если бы дополненный начальными нулями к самой близкой длине.

Значения, определенные как неразграниченные строки, интерпретируются согласно их длине. Для строки 8 или 14 символов долго, год, как предполагается, дается первыми 4 символами. Иначе, год, как предполагается, дается первыми 2 символами. Строка интерпретируется слева направо, чтобы найти год, месяц, день, час, минуту, и вторые значения, поскольку так много частей, как присутствуют в строке. Это означает, что недопустимо использовать строки, у которых есть меньше чем 6 символов. Например, если Вы определяете '9903', взгляды это представляет март 1999, MySQL, преобразовывают это в "нулевое" значение даты. Это происходит, потому что значения года и месяца 99 и 03, но дневная часть является абсолютно недостающей. Однако, можно явно определить значение нуля, чтобы представить недостающие части месяца или дня. Например, чтобы вставить значение '1999-03-00', использовать '990300'.

MySQL распознает TIME значения в этих форматах:

Запаздывающая часть долей секунды распознается в 'D HH:MM:SS.fraction', 'HH:MM:SS.fraction', 'HHMMSS.fraction', и HHMMSS.fraction форматы времени, где fraction дробная часть в до микросекунд (6 цифр) точность. Для получения информации о поддержке долей секунды в MySQL см. Раздел 11.3.6, "Доли секунды во Временных стоимостях".

Для TIME значения, определенные как строки, которые включают разделитель части времени, является ненужным определить две цифры в течение многих часов, минут, или значений секунд, которые являются меньше чем 10. '8:3:2' то же самое как '08:03:02'.