Php 如何在MySQL查询中比较两个日期?
我想比较sql语句中的两个日期,如下所示:Php 如何在MySQL查询中比较两个日期?,php,mysql,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_
$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进行比较。在查询中是否有类似“strotime”的函数可用于更改匹配日期的类型并进行比较
从匹配的注释中删除,其中标志=1和
日期格式(匹配日期,%Y-%m-%d')>DATE子(CURDATE(),间隔-5
日)
您可以使用date_格式和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'
您可以在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\u TIMESTAMP
:
DELETE FROM matches_of_comments
WHERE flag = 1
AND STR_TO_DATE(match_date, '%d.%m.%Y') > CURDATE() - INTERVAL 5 DAY;
这可以完成,但答案取决于日期的格式。请在
VARCHAR
列中描述日期格式-是否为MM/DD/YYYY
<代码>YYYY-MM-DD?还有什么?它是d.m.Y,比如2013年8月27日。我尝试将此解决方案与CURDATE()一起使用,但它不起作用。我尝试使用select而不是delete,因此它给了我所有的日期。在表中,WHERE
子句应该找到相同的行,无论您是执行delete
还是执行INSERT
。可能是我误解了你的约会方式。你能给我一个你表格中两个日期的确切例子吗:一个在过去五天内,一个不在过去五天内?你能检查一下这个问题吗?请stackoverflow.com/questions/18592395/how-to-subtract-a-value-from-curdate/这个问题还需要你从你的表格中显示一些实际的日期值桌子因为它更新了,所以有更好的机会被回答,所以你能在那里添加样本日期吗?