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

Вычисления со значениями TIMESTAMP Задача

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

Решение
Для значений TIMESTAMP возможны те же операции, что и для DATETIME: сравнение, сдвиг и извлечение составляющих.

Обсуждение
Для таблицы tsdemo2 из рецепта 5.33 рассмотрим запросы, выполняющие некоторые из операций, допустимых для значений TIMESTAMP:

• Записи, которые не обновлялись с момента создания:

SELECT * FROM tsdemo2 WHERE t_create = t_update;

• Записи, изменявшиеся в течение последних 12 часов:

SELECT * FROM tsdemo2 WHERE t_update >= DATE_SUB(NOW(),INTERVAL 12 HOUR);

• Интервал между временем изменения и создания (в часах и секундах):

SELECT t_create, t_update,
UNIX_TIMESTAMP(t_update) - UNIX_TIMESTAMP(t_create) AS 'seconds',
(UNIX_TIMESTAMP(t_update) - UNIX_TIMESTAMP(t_create))/(60 * 60) AS 'hours'
FROM tsdemo2;

• Записи, созданные с 13 до 16 часов:

SELECT * FROM tsdemo2
WHERE HOUR(t_create) BETWEEN 13 AND 16;

или:

SELECT * FROM tsdemo2
WHERE DATE_FORMAT(t_create,'%H%i%s') BETWEEN '130000' AND '160000';

Можно даже использовать TIME_TO_SEC() для отбрасывания составляющей даты значений t_create:

SELECT * FROM tsdemo2
WHERE TIME_TO_SEC(t_create)
BETWEEN TIME_TO_SEC('13:00:00') AND TIME_TO_SEC('16:00:00');

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

Вывод значений TIMESTAMP в удобном для чтения виде

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