MySQL / 5. Работа с датами и временем

Изменение формата даты MySQL

Задача
Вы хотите изменить формат, в котором MySQL представляет значения дат.

Решение
Это невозможно. Однако вы можете при сохранении данных преобразовать их в нужный формат, а при отображении привести их практически к любому виду, используя функцию DATE_FORMAT().

Обсуждение
Формат CCYY-MM-DD, используемый MySQL для значений дат, соответствует стандарту ISO 8601 представления дат. Удобство этого формата в том, что год, месяц и день в нем имеют фиксированную длину и появляются в строке даты слева направо, так что даты естественным образом сортируются в правильном хронологическом порядке. Но формат ISO используется не во всех системах баз данных, что может вызвать проблемы при перемещении данных из одной СУБД в другую. Кроме того, многие предпочитают другие форматы дат, такие как MM/DD/YY или DD-MM-CCYY. Это может вызывать проблемы, связанные с несоответствием ожиданий пользователей относительно формата хранения даты и реального поведения MySQL.

Новички в MySQL часто задают вопрос: «Как указать MySQL на необходимость хранить данные в определенном формате, например MM/DD/CCYY?» Ответом, к сожалению, будет: «Никак». MySQL всегда хранит даты в формате ISO, и последствия этого факта затрагивают как ввод данных, так и отображение результирующего множества:

• Для того чтобы при вводе данных сохранить значения, имеющие формат не-ISO, следует сначала преобразовать их. (Если вы не хотите этого делать, придется хранить их как строки, например в столбце CHAR. Но тогда вы не сможете работать с ними как с датами.) В некоторых случаях, если формат значений близок к ISO, преобразование может и не потребоваться. Например, возьмем строковые значения 87-1-7 и 1987-1-7 и числа 870107 и 19870107. При загрузке в столбец DATE все они интерпретируются MySQL как дата 1987-01-07.

• Что касается отображения данных, можно представлять даты не в формате ISO, преобразовав их. Помочь в этом может функция MySQL DATE_FORMAT(), предоставляющая широкий выбор форматов вывода. Вы также можете использовать такие функции, как YEAR(), для извлечения частей дат. Дополнительная информация об изменении формата вывода приведена в главе 10, где также представленнебольшой сценарий, который выгружает содержимое таблицы с переформатированными столбцами дат.

Статьи по MySQL на эту тему:

Выбор записей по временным характеристикам
Вывод значений TIMESTAMP в удобном для чтения виде
Вычисление возраста
Вычисление длины месяца
Вычисление интервалов между значениями времени

Вернуться в раздел: MySQL / 5. Работа с датами и временем