Вы хотите вычислить интервал между значениями 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');