我正在尝试使用单个查询从表中请求在今天或之后出现的任何记录。
每条记录的所有日期都存储在单独的列中,例如 - month
, 一个用于 year
, 一个代表 day
.
很明显,我已经获得了今天日期之后发生的所有记录
$sql = "SELECT * FROM table WHERE year>=".$year_today."
ORDER BY year, month, day";
然后我一直在尝试通过以下方式过滤掉它:
$sql = "SELECT * FROM table
WHERE year>=".$year_today." && month>=".$month_today."
&& day>=".$day_today."
ORDER BY year, month, day";
为了测试它,我在数据库中创建了一条日期为yesterdays 的记录,然而,这条记录仍然出现在返回记录列表中。我究竟做错了什么? :(
最佳答案
这可以使用时间函数以一种很好的方式实现,而使用 DATE 列时效果更好。
SELECT * FROM TABLE WHERE TIMESTAMP(CONCAT(year,"-",month,"-",day)) >= CURDATE()
好吧,这很糟糕,因为它不使用索引……正确的做法是 DATE 列,但是手动完成所有这些操作很烦人,因为您还必须考虑年份较大但月份较小的情况东西....
关于php - 尝试使用单个查询按日期过滤 mysql 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1888732/