如何根据日期选择 MySQL 记录而不考虑时间
在使用包含日期时间列的表时,通常需要检索特定日期的记录,无论它们发生的时间如何。但是,使用简单的日期比较可能效率低下,并且会妨碍索引利用率。
错误的方法涉及选择应用于日期时间列的日期函数与所需日期匹配的记录,例如:
SELECT * FROM tablename WHERE DATE(columnname) = '2012-12-25'
此查询需要 MySQL 计算每一行的日期,这对于大型数据集来说可能是计算密集型且缓慢的。此外,在 WHERE 子句中使用计算会阻止使用日期时间列上的索引来优化查询。
相反,更有效的方法是定义代表一整天的日期时间值范围,确保它包括特定日期的开始和结束。这是使用 BETWEEN 子句实现的:
SELECT * FROM tablename WHERE columnname BETWEEN '2012-12-25 00:00:00' AND '2012-12-25 23:59:59'
此修改后的查询允许 MySQL 在日期时间列上使用索引,从而显着提高性能。需要注意的是,这种方法可确保选择全天的记录,无论它们发生的时间如何。
请注意,在 MySQL 的最新版本中,建议使用以下语法以避免潜在的问题歧义性:
SELECT * FROM tablename WHERE columnname >= '2012-12-25 00:00:00' AND columnname < '2012-12-26 00:00:00'
通过遵循这些准则,您可以根据日期高效地选择记录,而无需考虑 MySQL 中的时间,从而确保最佳的数据库性能。
以上是如何高效地按天选择 MySQL 记录,忽略时间?的详细内容。更多信息请关注PHP中文网其他相关文章!