选择比当前日期早x天的记录

时间:2018-09-20 20:43:34

标签: php mysql date compare

我试图从PHP文件中的MySQL表“ my_table”和“ Last_updated_time”列中选择X天之前的记录。我尝试了各种组合。我的“上次更新时间”列为Varchar,而不是Date类型。

我的选择语句看起来像这样:

$sql = "SELECT * FROM my_table WHERE  str_to_date(Last_updated_time, '%d/%m/%Y') < DATE_SUB(NOW(), INTERVAL  X DAY) AND Place='So_and_So'  ";

我什至尝试过:

$sql = "SELECT * FROM my_table WHERE (Last_updated_time < NOW() - INTERVAL X DAY) AND Place=' So_and_So' "; 

我使用结果以JSON格式发送要在我的Android文件中进行解析。

请帮助我。我搜索了很多。谢谢。

1 个答案:

答案 0 :(得分:1)

这应该有效:

SELECT * 
FROM my_table 
WHERE STR_TO_DATE(Last_updated_time, '%m/%d/%Y') < CURDATE() - INTERVAL X DAYS
AND Place='So_and_So'

您确定Last_updated_time的格式为dd / mm / yyyy吗?如果没有,则应更改“%m /%d /%Y”部分。

对不起,所有编辑,我一直搞砸了:P

最后一次编辑:

您应该真正考虑将Last_updated_time字段更改为日期类型。您可以创建一个临时列,并使用类似的内容更新整个表。

UPDATE my_table 
SET `temp_updated_time` = STR_TO_DATE(Last_updated_time, '%m/%d/%Y')

之后,您可以删除旧列并将新列重命名为旧列名称。这应该极大地加快搜索速度,因为str_to_date非常慢。当然,如果需要,您还应该更改代码。如果可以,请始终寻求更快/永久的解决方案!