MySQL DATETIME DIFF запрос

У меня есть запрос MySQL, который выполняется через cron каждые 30 минут, чтобы удалить старые списки свойств, запрос:

 DELETE FROM $wpdb->posts WHERE post_type = 'rentals' AND DATEDIFF(NOW(), post_date_gmt) >=2  

прямо сейчас на этапе тестирования и установит, чтобы удалить, когда листинг составляет 2 дня, это без проблем, проблема, которая у меня есть, заключается в том, что мне нужно, чтобы она распознавала время с момента публикации списка и время, когда оно должно быть удалено,

В основном столбец таблицы post_date_gmt находится в формате 2011-05-26 13:10:56, а тип столбца DATETIME, когда у меня выполняется запрос DATEDIFF (NOW(), он должен быть равен 48 часам или более с текущего времени до удалите листинг, этого не происходит, запрос просто кажется "это второй день, удалить список", поэтому он удаляется, и это может быть, когда всего 24 с половиной часа, как я могу заставить его перейти точное 48 часов?

Привет

Ответ 1

Попробуйте timediff с 48-часовой дельтами. Или используйте дельту 3 дня, если точность не является проблемой.

Попробуйте HOUR(TIMEDIFF(NOW(), date))

SELECT count(*) FROM $wpdb->posts WHERE post_type = 'rentals' AND HOUR(TIMEDIFF(NOW(),  post_date_gmt)) >=48

Существует много функций даты и времени MySQL: http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_hour

Примечание: используйте SELECt перед попыткой DELETE

Ответ 2

вы можете DATEDIFF(NOW(), post_date_gmt) >= 3, и он будет удален 48 и половиной часа