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

Синтез дат и времени с помощью функций форматирования

Задача
Вы хотите получить из имеющейся даты новую, заменив часть значений исходной даты.

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

Обсуждение
Операцией, дополняющей разбиение значений дат и времени на части, является синтез значения из составляющих. Синтез дат и времени осуществляется при помощи функций форматирования (описано в данном рецепте) и объединения строк.

Значение даты часто формируется на основе имеющегося с заменой соответствующих частей. Например, чтобы найти первый день месяца, к которому относится дата, используйте DATE_FORMAT() для извлечения года и месяца из имеющейся даты и объедините их со значением дня 01:

mysql> SELECT d, DATE_FORMAT(d,'%Y-%m-01') FROM date_val;

+------------+---------------------------+
| d | DATE_FORMAT(d,'%Y-%m-01') |
+------------+---------------------------+
| 1864-02-28 | 1864-02-01 |
| 1900-01-15 | 1900-01-01 |
| 1987-03-05 | 1987-03-01 |
| 1999-12-31 | 1999-12-01 |
| 2000-06-04 | 2000-06-01 |
+------------+---------------------------+

Функцию TIME_FORMAT() можно использовать аналогично:

mysql> SELECT t1, TIME_FORMAT(t1,'%H:%i:00') FROM time_val;

+----------+----------------------------+
| t1 | TIME_FORMAT(t1,'%H:%i:00') |
+----------+----------------------------+
| 15:00:00 | 15:00:00 |
| 05:01:30 | 05:01:00 |
| 12:30:20 | 12:30:00 |
+----------+----------------------------+

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

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

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