php - 尝试使用单个查询按日期过滤 mysql 表

标签 php mysql database

我正在尝试使用单个查询从表中请求在今天或之后出现的任何记录。
每条记录的所有日期都存储在单独的列中,例如 - 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/

相关文章:

database - 数据库的内部运作

php - 个人资料页面不显示用户个人资料信息或更新

php - 如何使用 PHP 将单个数组项推送到另一个数组中?

php - 使用 Android 发布变量

javascript - 在加载下一页时保持网站事件

mysql - 如何根据某些条件插入或更新?

c# - 如何在 Linq 中使用 Sum()?

php - 使用 PHP 存储图像

php - 从 PHP 插入 60000 行 Mysql

php - SQL 搜索查询多次显示相同的结果,尽管在我的数据库中仅出现一次