我正在尝试从PHP文件中的MySQL表"my_table"和列"Last_updated_time"中选择早于X天的记录。我尝试了各种组合。我的列"Last_updated时间"是 Varchar 而不是日期类型。
我的选择语句看起来像这样:
$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 文件中解析。
请帮助我。我搜索了很多。谢谢。
这应该有效:
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的格式是日/月/年吗?如果没有,则应更改"%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非常慢。当然,如果需要,您还应该更改代码。如果可以的话,总是选择更快/永久的解决方案!