Обработка в MySQL строк как значений времени

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

Решение
Используйте строку в контексте времени, чтобы дать MySQL понять, как вы бы хотели ее интерпретировать.

Обсуждение
Если вам нужно заставить MySQL интерпретировать строку как дату или время, используйте ее в выражении, которое, не изменяя значения, создает временной контекст. Например, вы не можете добавить ноль к строковому литералу TIME, инициируя преобразование времени в число, но если использовать функции TIME_TO_SEC() и SEC_TO_TIME(), то такая возможность появится:

mysql> SELECT SEC_TO_TIME(TIME_TO_SEC('12:30:45'))+0;

+------------------------------------------------------+
| SEC_TO_TIME(TIME_TO_SEC('12:30:45'))+0 |
+------------------------------------------------------+
| 123045 |
+------------------------------------------------------+

Преобразование значения в секунды и обратно не изменяет его, но заставляет MySQL воспринимать результат как значение типа TIME. Для значений дат делаем то же самое, только используем функции TO_DAYS() и FROM_DAYS():

mysql> SELECT '1999-01-01'+0, FROM_DAYS(TO_DAYS('1999-01-01'))+0;

+----------------+----------------------------------------------------+
| '1999-01-01'+0 | FROM_DAYS(TO_DAYS('1999-01-01'))+0 |
+----------------+----------------------------------------------------+
| 1999 | 19990101 |
+----------------+----------------------------------------------------+

Для интерпретации строк форматов DATETIME и TIMESTAMP можно прибегнуть к помощи функции DATE_ADD():

mysql> SELECT
-> DATE_ADD('1999-01-01 12:30:45',INTERVAL 0 DAY)+0 AS 'numeric datetime',
-> DATE_ADD('19990101123045',INTERVAL 0 DAY)+0 AS 'numeric timestamp';

+---------------------+----------------------+
| numeric datetime | numeric timestamp |
+---------------------+----------------------+
| 19990101123045 | 19990101123045 |
+---------------------+----------------------+.



Оцените статью: (0 голосов)
0 5 0

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

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