php - 如何使用 PHP 从 MYSQL 按日期排序

标签 php mysql datetime date

我有一个 php 页面,它允许用户根据几个因素对信息进行排序。一项新要求是按“过去 15 天内注册的所有项目”排序。我将日期存储在 MYSQL 表中,格式为 mm/dd/yyyy

使用 $_GET 变量在同一页面上传递和获取信息,但由于某种原因我无法使代码正常工作。我浏览了许多网站,但找不到有效的解决方案。

最终,该脚本将按如下方式工作:

选择 KDATE 在今天日期后 15 天内的所有人员(例如,如果今天是 2010 年 8 月 19 日,则将显示从 2010 年 8 月 4 日起注册的所有人员)。

到目前为止我的脚本(不起作用)是:

if (isset($_GET['date'])) {
     $query = "SELECT * 
                 FROM persons 
                WHERE DATE_SUB(CURDATE(),INTERVAL 15 DAY) <= KDATE 
             ORDER BY KDATE ASC";
}

更新 1:

KDATE IS TEXT - 抱歉,KDATE 存储为文本

更新 2:

Colin 提供的答案解决了我的问题。我将考虑尝试将数据转换为日期时间格式,但我希望该小组能够提供这样做的实际好处。

再次感谢大家

最佳答案

首先,如果您想要仅包含日期的列,那么使用 VARCHAR 而不是 DATE 是一个非常糟糕的主意。

如果您想使用字符串作为日期,则需要使用 STR_TO_DATE() 进行转换。你可能不想使用 those instructions正确设置日期格式。

这应该可以做到:

SELECT * 
FROM persons 
WHERE DATE_SUB(CURDATE(),INTERVAL 15 DAY) <= STR_TO_DATE(KDATE, "%c/%d/%Y")
ORDER BY STR_TO_DATE(KDATE, "%c/%d/%Y") ASC

关于php - 如何使用 PHP 从 MYSQL 按日期排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3526154/

相关文章:

php - MySQL 触发器在 PHP 中不起作用

php - 调用未定义的方法 Closure::query()

javascript - 如何在 javascript 中将字符串转换为 Date 类?

c++ - 如何从 boost::posix_time::ptime 获取自纪元时间以来的毫秒数

php - 日期之间的mysql获取结果

php - Laravel - 仅当先前相同的任务完成时才运行计划任务

php - 在Mysql中过滤数据

mysql - 仅更改 MySQL 中一组表的更新和删除规则

PHP - 计算数组中匹配的数组

php - Sphinx搜索的数据库定义