2011-06-20 8 views
10

は、私は古いプロパティリストを削除するには、cronを経由して30分ごとに実行されますMySQLのクエリを持って、クエリは次のとおりです。MySQLのDATETIME DIFFクエリ

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ですクエリーを実行するには、リストを削除するのに現在の時刻から48時間以上が必要ですが、これは起こっていません。クエリーは「これは2日目です。リストを削除します」というメッセージが表示され、削除されます。ちょうど24時間半の時に、どうすれば完全に正確な48時間にすることができますか?

よろしく

+0

を削除しようとする前にSELECTを使用するには、同じ結果を生成timediff使用していますか? – BugFinder

答えて

17

を削除されます。 精度に問題がない場合は、3日のデルタを使用してください。

MySQLの日付/時刻関数がたくさんあるHOUR(TIMEDIFF(NOW(), date))

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

をお試しください: http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_hour

注:

+0

ありがとう、私はこれを '$ wpdbから削除する 'のようなものを意味します。post_type =' rentals 'AND TIMEDIFF(NOW()、post_date_gmt)> = 48'もしそうでなければ、ダミー)どのようにデルタを実装するのですか?...に関して – MartinJJ

+0

あなたの時間のために非常に感謝VGE、答えとしてマークされ、あなたのリンクをフォローアップ – MartinJJ

0

することができますDATEDIFF(NOW(), post_date_gmt) >= 3、それは代わりに、48時間のデルタでtimediff試し48時間半古い