MySQL DATETIME DIFF запрос - PullRequest
       15

MySQL DATETIME DIFF запрос

10 голосов
/ 20 июня 2011

У меня есть запрос 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 часам или больше от текущего времени до удалить список, это не происходит, просто кажется, что в запросе написано «это 2-й день, удалить список», поэтому он удаляется, и это может быть, когда ему всего 24 с половиной часа, как я могу сделать его полным точные 48 часов?

Привет

Ответы [ 2 ]

17 голосов
/ 20 июня 2011

Попробуйте использовать 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 перед попыткой УДАЛИТЬ

0 голосов
/ 20 июня 2011

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

...