我试图从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文件中进行解析。
请帮助我。我搜索了很多。谢谢。
答案 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非常慢。当然,如果需要,您还应该更改代码。如果可以,请始终寻求更快/永久的解决方案!