Spec-Zone .ru
спецификации, руководства, описания, API
|
DATE
, DATETIME
, и TIMESTAMP
типы связываются. Этот раздел описывает их характеристики, как они подобны,
и как они отличаются. MySQL распознает DATE
, DATETIME
,
и TIMESTAMP
значения в нескольких форматах, описанных в Разделе
9.1.3, "Дата и Литералы Времени". Для DATE
и DATETIME
описания диапазона, "поддерживаемые",
означают, что, хотя более ранние значения могли бы работать, нет никакой гарантии.
DATE
тип используется для значений с частью даты, но никакой частью времени. MySQL
получает и выводит на экран DATE
значения в 'YYYY-MM-DD'
формат. Поддерживаемый диапазон '1000-01-01'
к '9999-12-31'
.
DATETIME
тип используется для значений, которые содержат и дату и части времени.
MySQL получает и выводит на экран DATETIME
значения в 'YYYY-MM-DD
HH:MM:SS'
формат. Поддерживаемый диапазон '1000-01-01 00:00:00'
к '9999-12-31 23:59:59'
.
TIMESTAMP
тип данных используется для значений, которые содержат и дату и части
времени. TIMESTAMP
имеет диапазон '1970-01-01
00:00:01'
UTC к '2038-01-19 03:14:07'
UTC.
A DATETIME
или TIMESTAMP
значение может включать
запаздывающую часть долей секунды в до микросекунд (6 цифр) точность. В частности с MySQL 5.6.4 любая дробная
часть в значении вставляется в a DATETIME
или TIMESTAMP
столбец сохранен, а не отбрасывается. С включенной дробной частью
формат для этих значений 'YYYY-MM-DD HH:MM:SS[.fraction]'
, диапазон для DATETIME
значения '1000-01-01 00:00:00.000000'
к
'9999-12-31 23:59:59.999999'
, и диапазон для TIMESTAMP
значения '1970-01-01 00:00:01.000000'
к '2038-01-19
03:14:07.999999'
. Для получения информации о поддержке долей секунды в MySQL см. Раздел
11.3.6, "Доли секунды во Временных стоимостях".
TIMESTAMP
и (с MySQL 5.6.5) DATETIME
типы данных
предлагают автоматическую инициализацию и обновляющий к текущей дате и время. Для получения дополнительной
информации см. Раздел
11.3.5, "Автоматическая Инициализация и Обновляющий для TIMESTAMP
и DATETIME
".
MySQL преобразовывает TIMESTAMP
значения от зоны текущего времени до UTC для
хранения, и назад от UTC до зоны текущего времени для извлечения. (Это не происходит для других типов такой как
DATETIME
.) По умолчанию зона текущего времени для каждого соединения является
временем сервера. Часовой пояс может быть установлен на основе для каждого подключения. Пока установка часового
пояса остается постоянной, Вы возвращаете то же самое значение, которое Вы храните. Если Вы храните a TIMESTAMP
значение, и затем изменяет часовой пояс и получает значение, полученное
значение отличается от значения, которое Вы сохранили. Это происходит, потому что тот же самый часовой пояс не
использовался для преобразования в обоих направлениях. Зона текущего времени доступна как значение time_zone
системная переменная. Для получения дополнительной информации см.
Раздел
10.6, "MySQL Server Time Zone Support".
Недопустимый DATE
, DATETIME
, или TIMESTAMP
значения преобразовываются в "нулевое"
значение соответствующего типа ('0000-00-00'
или '0000-00-00
00:00:00'
).
Знайте об определенных свойствах интерпретации значения даты в MySQL:
MySQL разрешает "ослабленный" формат для значений, определенных как строки, в
которых любой символ пунктуации может использоваться в качестве разделителя между частями даты или
частями времени. В некоторых случаях этот синтаксис может обманывать. Например, значение такой как '10:11:12'
мог бы быть похожим на временную стоимость из-за":
"разделитель,
но интерпретируется как год '2010-11-12'
если использующийся в контексте
даты. Значение '10:45:15'
преобразовывается в '0000-00-00'
потому что '45'
не допустимый месяц.
Сервер требует в том месяце, и дневные значения допустимы, и не просто в диапазоне
1 - 12 и 1 к 31, соответственно. Со строгим режимом отключенные, недопустимые даты такой как '2004-04-31'
преобразовываются в '0000-00-00'
и предупреждение сгенерировано. Со строгим включенным
режимом, недопустимые даты генерируют ошибку. Чтобы разрешить такие даты, включить ALLOW_INVALID_DATES
. См. Раздел
5.1.7, "Режимы SQL Сервера", для получения дополнительной информации.
MySQL не принимает TIMESTAMP
значения, которые
включают нуль в столбец дня или месяца или значения, которые не являются допустимой датой. Единственное
исключение к этому правилу является специальным "нулевым"
значением '0000-00-00 00:00:00'
.
Даты, содержащие двухразрядные значения года, неоднозначны, потому что столетие неизвестно. MySQL интерпретирует двухразрядные значения года, используя эти правила:
Год оценивает в диапазоне 00-69
преобразовываются в 2000-2069
.
Год оценивает в диапазоне 70-99
преобразовываются в 1970-1999
.
См. также Раздел 11.3.8, "Двухразрядные Годы в Датах".
Сервер MySQL может быть выполнен с MAXDB
Режим SQL включается. В этом случае, TIMESTAMP
идентично с DATETIME
. Если этот режим
включается в то время, когда таблица составляется, TIMESTAMP
столбцы создаются
как DATETIME
столбцы. В результате такое использование столбцов DATETIME
выведите на экран формат, имейте тот же самый диапазон значений, и
нет никакой автоматической инициализации или обновляющий к текущей дате и время. См. Раздел
5.1.7, "Режимы SQL Сервера".