MySQL日期范围选择

时间:2015-06-04 18:17:29

标签: mysql date

已知以下SQL语句将选择一个数据范围,哪一个是其中一个最有效的数据范围,并且使用timestampdatetime将改变性能

假设我们有桌子 testtimestampdatatime 我想提取2015年5月的所有记录:

WHERE DATE_FORMAT(timestamp,'%Y-%m') = '2015-05'
WHERE timestamp BETWEEN '2015-01-01' AND '2015-01-31'
WHERE timestamp >= '2015-01-01' AND timestamp <= '2015-01-31'
WHERE YEAR(timestamp) = 2015 AND MONTH(timestamp) = 5

我应该避免哪种,哪种是最佳做法

1 个答案:

答案 0 :(得分:1)

这几乎是一个主观问题,因为它实际上取决于您在表格和列上的索引。

如果你的列上有索引,那么你可以使用这两个中的任何一个

WHERE timestamp BETWEEN '2015-01-01' AND '2015-01-31'
WHERE timestamp > '2015-01-01' AND timestamp < '2015-01-31'

这两者都可以利用索引并执行更快的速度

关于这两者中哪一个会更快地执行,我不认为存在差异。我的偏好是使用BETWEEN,因为在阅读查询时我更有意义。选择一个并坚持下去。一致性是关键