#php #mysql
#php #mysql
Вопрос:
Я настроил поле метки времени с дополнительным значением ПРИ ОБНОВЛЕНИИ CURRENT_TIMESTAMP. Это работает, но у меня есть вопрос:
Я хотел бы проверить наличие всех записей, которые старше сегодняшнего дня — как мне это сделать?
Комментарии:
1. Старше сегодняшнего дня или старше 24 часов?
Ответ №1:
Вы также могли бы использовать date_sub, чтобы упростить задачу
SELECT * FROM table WHERE timestamp_info < DATE_SUB(NOW(), INTERVAL 1 DAY);
Ответ №2:
SELECT *
FROM {your_table}
WHERE {time_stamp_field} < CURDATE()
Или вы могли бы сделать
SELECT *
FROM {your_table}
WHERE {time_stamp_field} <= DATE_SUB( CURDATE(), INTERVAL 1 DAY )
Итак, если CURDATE()
возвращает 2011-05-16, DATE_SUB( CURDATE(), INTERVAL 1 DAY )
вычисляется значение 2011-05-15.
Комментарии:
1. Это
CURDATE()
не CUR_DATE()
Ответ №3:
Примером запроса для старше сегодняшнего дня (до полуночи) может быть:
SELECT * FROM my_table WHERE timestamp_column < CURDATE();
Ознакомьтесь с функциями даты / времени MySQL для получения более подробной информации. Если вы хотите, чтобы записи были старше, чем за последние 24 часа, ознакомьтесь с ответом fafnirbcrow
Комментарии:
1. Это неоднозначно, но я подозреваю, что «записи, которые старше сегодняшнего дня», могут означать что-то вроде «24-часовой давности».
2. это старше, чем сейчас; не сегодня.
Ответ №4:
Я предполагаю, что под «старше сегодняшнего дня» вы имеете в виду все, что было вставлено до прошлой ночи в полночь. Если вы имеете в виду более старые, чем 24 часа назад, дайте мне знать (и отредактируйте свой вопрос).
Вот что вы делаете:
- Получаем вчерашнюю временную метку:
$timestamp = strtotime('24.00 yesterday')
; - Преобразуйте его в формат mysql datetime:
$mysql_datetime = date('Y-m-d H:i:s', $timestamp)
; - Выполните запрос:
SELECT foo FROM bar WERE baz < $timestamp
.
Комментарии:
1. Чистое решение MySQL лучше в том случае, если база данных находится на отдельном сервере.
2. @jason ты имеешь в виду, с другими настройками времени? потому что в противном случае я не вижу никакой проблемы.
3. ДА. Обычно время для MySQL и PHP может отличаться или даже иметь разные настройки часового пояса. Особенно когда на отдельных серверах. Если пользователь хранит дату в MySQL (как видно из
ON UPDATE
), то они должны сравнивать в MySQL.4. 1 Выполнение этого с помощью PHP позволяет кэшировать запрос, тогда как использование встроенных функций MySQL — нет.