我正在尝试创建一个select语句,该语句按年份和月份获取项。
到目前为止,这就是我所拥有的:
SELECT * FROM sales WHERE YEAR(Date) = 2013 AND MONTH(?) = 'June'我不能仅仅选择日期范围,因为不同的月份有不同的天数。根据月份的数目(即1月为1)或类似的方法来选择月份将是理想的。
这在mysql语句中是如何实现的?
这些字段是日期时间字段,如2012-12-01 00:00:00。
发布于 2014-08-21 22:52:04
看一看你的表演,然后把你的情况写成
SELECT * FROM sales
WHERE
Date >= '2013-06-01 00:00:00'
AND
Date < '2013-07-01 00:00:00'例如:2013年6月
因此,MySQL可以在列日期上使用索引。您将在2013年6月得到所有的日期行,甚至是第一秒的行,而不是2013年7月的第一秒钟的行。
您知道,您不需要知道特定月份的天数,因为您将永远使用两个月的头一个。
您也可以使用一些日期计算:
SELECT * FROM sales
WHERE
Date >= '2013-06-01 00:00:00'
AND
Date < '2013-06-01 00:00:00' + INTERVAL 1 MONTH所以你只需要知道间隔的开始和长度。
Note
我回答的最重要的部分是使用列Date,而不使用这个列上的函数,这样MySQL就可以使用索引。
https://stackoverflow.com/questions/25437148
复制相似问题