我有一个 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/