Spec-Zone .ru
спецификации, руководства, описания, API
|
Дата и временные стоимости могут быть представлены в нескольких форматах, таких как заключенные в кавычки строки
или как числа, в зависимости от точного типа значения и других факторов. Например, в контекстах, где 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
значения в этих форматах:
Как строка в также 'YYYY-MM-DD'
или 'YY-MM-DD'
формат. "Ослабленный"
синтаксис разрешается: Любой символ пунктуации может использоваться в качестве разделителя между частями
даты. Например, '2012-12-31'
, '2012/12/31'
,
'2012^12^31'
, и '2012@12@31'
эквивалентны.
Как строка без разделителей в также 'YYYYMMDD'
или
'YYMMDD'
формат, при условии, что строка имеет смысл как дату. Например,
'20070523'
и '070523'
интерпретируются как
'2007-05-23'
, но '071332'
недопустимо (у этого
есть бессмысленные части месяца и дня), и становится '0000-00-00'
.
Как число в также YYYYMMDD
или YYMMDD
формат, при условии, что число имеет смысл как дату. Например, 19830905
и
830905
интерпретируются как '1983-09-05'
.
MySQL распознает DATETIME
и TIMESTAMP
значения в этих форматах:
Как строка в также 'YYYY-MM-DD HH:MM:SS'
или 'YY-MM-DD HH:MM:SS'
формат. "Ослабленный"
синтаксис разрешается здесь, также: Любой символ пунктуации может использоваться в качестве разделителя
между частями даты или частями времени. Например, '2012-12-31 11:30:45'
,
'2012^12^31 11+30+45'
, '2012/12/31 11*30*45'
,
и '2012@12@31 11^30^45'
эквивалентны.
Дата и части времени могут быть разделены T
вместо пространства.
Например, '2012-12-31 11:30:45'
'2012-12-31T11:30:45'
эквивалентны.
Как строка без разделителей в также 'YYYYMMDDHHMMSS'
или 'YYMMDDHHMMSS'
формат, при условии, что строка имеет смысл как дату.
Например, '20070523091528'
и '070523091528'
интерпретируются как '2007-05-23 09:15:28'
, но '071122129015'
недопустимо (у этого есть бессмысленная мелкая часть), и становится '0000-00-00
00:00:00'
.
Как число в также YYYYMMDDHHMMSS
или YYMMDDHHMMSS
формат, при условии, что число имеет смысл как дату. Например,
19830905132800
и 830905132800
интерпретируются
как '1983-09-05 13:28:00'
.
A DATETIME
или TIMESTAMP
значение может включать запаздывающую часть долей секунды в до
микросекунд (6 цифр) точность. Для получения информации о поддержке долей секунды в MySQL см. Раздел
11.3.6, "Доли секунды во Временных стоимостях".
Даты, содержащие двухразрядные значения года, неоднозначны, потому что столетие неизвестно. MySQL интерпретирует двухразрядные значения года, используя эти правила:
Год оценивает в диапазоне 70-99
преобразовываются в
1970-1999
.
Год оценивает в диапазоне 00-69
преобразовываются в
2000-2069
.
См. также Раздел 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'
формат. Можно также
использовать один из следующих "ослабленных" синтаксисов: 'HH:MM:SS'
,
'HH:MM'
, 'D HH:MM'
, 'D
HH'
, или 'SS'
. Здесь D
представляет
дни и может иметь значение от 0 до 34.
Как строка без разделителей в 'HHMMSS'
формат, при
условии, что это имеет смысл как время. Например, '101112'
понимается как
'10:11:12'
, но '109712'
недопустимо (у этого
есть бессмысленная мелкая часть), и становится '00:00:00'
.
Как число в HHMMSS
формат, при условии, что это имеет
смысл как время. Например, 101112
понимается как '10:11:12'
.
Следующие альтернативные форматы также понимаются: SS
, MMSS
, или HHMMSS
.
Запаздывающая часть долей секунды распознается в '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'
.