Pregunta Consulta DIFF DATETIME de MySQL


Tengo una consulta de MySQL que se ejecuta a través de cron cada 30 minutos para eliminar listas de propiedades antiguas, la consulta es:

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

ahora está en una fase de prueba y está configurado para eliminar cuando el listado tiene 2 días de antigüedad, esto lo hace sin problemas, el problema que tengo es que necesito que reconozca el tiempo desde que se publicó el listado y la hora a cuando debería ser eliminado,

Básicamente, la columna de la tabla de post_date_gmt está en el formato de 2011-05-26 13:10:56 y el tipo de columna es DATETIME cuando tengo el DATEDIFF (NOW() consulta que debe ser igual a 48 horas o más desde la hora actual para eliminar la lista, esto no está sucediendo, la consulta simplemente parece decir "este es el segundo día, eliminar la lista", por lo que se elimina y esto podría ser cuando Tan solo 24 horas y media de antigüedad, ¿cómo puedo hacerlo en las 48 horas completas?

Saludos


10
2018-06-20 11:47


origen


Respuestas:


Pruebe timediff con un delta de 48 horas en su lugar. O use un delta de 3 días si la precisión no es un problema.

Tratar HOUR(TIMEDIFF(NOW(), date))

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

Hay una gran cantidad de funciones de fecha / hora de MySQL: http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_hour

Nota: use SELECt antes de intentar DELETE


17
2018-06-20 11:52



usted puede DATEDIFF(NOW(), post_date_gmt) >= 3 y se eliminará 48 horas y media


0
2018-06-20 11:51