Поиск
Типы даты и времени
Типами даты и времени представления значений времени и даты являются DATETIME, DATE, TIMESTAMP, TIME и YEAR. Каждый их временных типов имеет диапазон допустимых значений, а также нулевого значения, используемого, когда вы указываете неверное значение, которое MySQL не может представить. Тип TIMESTAMP имеет специальное автоматическое поведение при обновлении, которое будет описано далее.
MySQL позволяет сохранять некоторые нестрого правильные даты, такие как '1999-05-31'. Причина состоит в том, что мы считаем, что проверка корректности даты - обязанность приложения, а не SQL-сервера. Чтобы обеспечить более высокую скорость проверки дат, MySQL проверяет только, чтобы месяц был от 0 до 12, а день - от О
до 31. Эти диапазоны включают нулевые значения, так как MySQL позволяет сохранять а столбцах типа DATE и DATETIME даты, у которых месяц и день равны нулю. Это очень удобно для приложений, которым необходимо хранить дни рождения, для которых неизвестна точная дата. В этом случае вы просто сохраняете дату вроде '1999-00-00' или ' 1999-01-00'. Если вы сохраняете дату в таком виде, то не должны ожидать корректных результатов от таких функций, как DATE_SUB() и DATE_ADD(), которые требуют в аргументах полной корректной даты.
Ниже приведены некоторые общие соглашения, которые следует иметь в виду при работе с типами времени и дат.
- MySQL извлекает значения типа времени и даты в стандартном формате вывода, но пытается интерпретировать множество форматов для вводимых значений (например, когда вы указываете значение времени и даты для присвоения или сравнения).Поддерживаются только форматы, описанные ниже. Ожидается, что вы будете вводить корректные значения, а при вводе значений в других форматах возможен непредсказуемый результат.
- Даты, содержащие двузначный год, неоднозначны, так как для них неизвестен век. MySQL интерпретирует двузначные годы по следующим правилам:
- Год в диапазоне 00-69 преобразуется в 2000-2069.
- Год в диапазоне 70-99 преобразуется в 1970-1999.
- Несмотря на то что MySQL старается интерпретировать значения в разных форматах, даты должны вводиться в порядке 'год-месяц-день' (например ' 98-09-04')вместо порядка 'месяц-день-год' или 'день-месяц-год', используемого где-либо (как например, '09-04-98' или '04-09-98').
- MySQL автоматически преобразует значения даты или времени, которые выходят за пределы диапазона, либо иным образом не соответствующие допустимым для
данного типа (как описано в начале данного раздела), обращая их в нулевыезначения (табл.). Исключением является тип TIME, для которого величины, выходящие за пределы диапазона, смещаются в соответствующее допустимое граничное значение.
Таблица Нулевые значения для разных типов столбцов
| Типстолбца | Нулевое значение |
|---|---|
| DATETIME | '0000-00-00 00:00:00 |
| DATE | '0000-00-00' |
| TIMESTAMP | 00000000000000 |
| TIME | '00:00:00' |
| YEAR | 0000 |
Нулевые значения являются специальными, но вы можете сохранять их и ссылаться на них, используя константы, приведенные в таблице. Это можно делать также, используя ' 0' или 0, что проще.
Нулевые значения даты и времени, используемые через Connector/ODBC (от версии 2.50.12 и выше), автоматически преобразуются в NULL, поскольку ODBC не может работать с такими значениями.