我有一个MySQL查询,每30分钟通过cron运行一次,删除旧的属性列表,查询是:
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小时?
此致
答案 0 :(得分:17)
尝试使用48小时增量的timediff。 如果精度不是问题,也可以使用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
注意:在尝试DELETE之前使用SELECt
答案 1 :(得分:0)
你可以DATEDIFF(NOW(), post_date_gmt) >= 3
它将被删除48个半小时