-1

次のようなSQLステートメントで2つの日付を比較したい:

$before_5_days = date("d.m.Y", strtotime( '-5 days' ) );
$GLOBALS['db']->query("DELETE FROM matches_of_comments WHERE flag=1 AND match_date >'$before_5_days'");

上記のクエリは間違ったフィールドを削除します。

match_date 列は varchar にあり、変更できません。同じ形式の $before_5_days と比較したいです。match_date のタイプを変更して比較するためにクエリで使用できる「strtotime」のような関数はありますか???

4

3 に答える 3

0

これは MySQL で実行できます。PHP の日付計算を行う必要はありません。

DELETE FROM matches_of_comments
WHERE flag = 1
  AND STR_TO_DATE(match_date, '%d.%m.%Y') > CURRENT_TIMESTAMP - INTERVAL 5 DAY;

CURRENT_TIMESTAMP日付と時刻に基づいて「5 日前」を基準にします。日付のみに基づくには、CURDATE()代わりにCURRENT_TIMESTAMP次を使用します。

DELETE FROM matches_of_comments
WHERE flag = 1
  AND STR_TO_DATE(match_date, '%d.%m.%Y') > CURDATE() - INTERVAL 5 DAY;
于 2013-08-27T15:18:02.387 に答える
0

DELETE FROM matches_of_comments WHERE flag=1 AND DATE_FORMAT(match_date, '%Y-%m-%d') > DATE_SUB(CURDATE(), INTERVAL -5 DAY)

于 2013-08-27T15:10:40.317 に答える
0

必要に応じて、date_format と str_to_date を使用できます。これでうまくいくと思います。

DELETE FROM matches_of_comments WHERE flag=1 AND date_format(STR_TO_DATE(match_date,'%d.%m.%Y'), '%d.%m.%Y') > '$before_5_days'
于 2013-08-27T15:13:14.650 に答える