如何比较MySQL查询中的两个日期?

时间:2013-08-27 14:57:03

标签: php mysql

我想在sql语句中比较两个日期,如下所示:

$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进行比较。是否有任何像“strtotime”这样的函数可以在查询中用来改变match_date的类型并进行比较???

3 个答案:

答案 0 :(得分:0)

  

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

答案 1 :(得分: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'

答案 2 :(得分: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;