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

anauzrmj  于 2021-06-19  发布在  Mysql
关注(0)|答案(1)|浏览(309)

我正在尝试从mysql表my\u table和php文件中的列last\u updated\u time中选择超过x天的记录。我试过各种组合。我的“上次更新时间”列是varchar而不是date类型。
我的select语句如下所示:

$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文件中进行解析。
请帮帮我。我找了那么多。谢谢。

mcvgt66p

mcvgt66p1#

这应该起作用:

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

您确定上次更新时间的格式是dd/mm/yyyy吗?如果不是,则应更改“%m/%d/%y”部分。
对不起,编辑太多了,我一直搞砸了
最后一次编辑:
您真的应该考虑将上次更新的时间字段更改为日期类型。您可以创建一个临时列,并用这样的内容更新整个表。

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

然后可以删除旧列并将新列重命名为旧列名。这将大大加快搜索速度,因为str\u to\u日期非常慢。当然,如果需要的话,你也应该修改你的代码。如果可以的话,总是寻求更快/永久的解决方案!

相关问题