MySQL 查询优化:检索某个时间范围内的记录
在前面的讨论中,用户寻求有关检索添加到数据库中的记录的指导过去 30 天内,具体要求以 mm/dd/yy 格式显示日期。提供的原始查询遇到了无法将结果限制在所需时间范围内的问题。
经检查,确定问题源于 DATE_FORMAT 函数的错误放置。为了实现所需的过滤,该函数应该应用于 SELECT 子句而不是 WHERE 子句。这是更正后的查询:
SELECT DATE_FORMAT(create_date, '%m/%d/%Y') FROM mytable WHERE create_date BETWEEN CURDATE() - INTERVAL 30 DAY AND CURDATE()
此外,需要注意的是 CURDATE() 仅返回时间戳的日期部分。如果 create_date 列包含具有非零时间部分的 DATETIME 值,则原始查询将排除今天的记录。为了解决这个问题,可以使用 NOW() 来代替:
SELECT DATE_FORMAT(create_date, '%m/%d/%Y') FROM mytable WHERE create_date BETWEEN NOW() - INTERVAL 30 DAY AND NOW()
通过这些更正,查询将正确检索满足指定时间范围和格式要求的记录。
以上是MySQL如何高效检索最近30天内的记录?的详细内容。更多信息请关注PHP中文网其他相关文章!