Как проверить наличие записей, которые старше сегодняшнего дня в PHP?

#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 часа назад, дайте мне знать (и отредактируйте свой вопрос).

Вот что вы делаете:

  1. Получаем вчерашнюю временную метку: $timestamp = strtotime('24.00 yesterday') ;
  2. Преобразуйте его в формат mysql datetime: $mysql_datetime = date('Y-m-d H:i:s', $timestamp) ;
  3. Выполните запрос: SELECT foo FROM bar WERE baz < $timestamp .

Комментарии:

1. Чистое решение MySQL лучше в том случае, если база данных находится на отдельном сервере.

2. @jason ты имеешь в виду, с другими настройками времени? потому что в противном случае я не вижу никакой проблемы.

3. ДА. Обычно время для MySQL и PHP может отличаться или даже иметь разные настройки часового пояса. Особенно когда на отдельных серверах. Если пользователь хранит дату в MySQL (как видно из ON UPDATE ), то они должны сравнивать в MySQL.

4. 1 Выполнение этого с помощью PHP позволяет кэшировать запрос, тогда как использование встроенных функций MySQL — нет.