我想在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的类型并进行比较???
答案 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;