按年份和月份选择项目范围

时间:2014-08-21 22:48:31

标签: mysql select

我正在尝试创建一个按月和月分项的select语句。

这是我到目前为止所做的:

SELECT * FROM sales WHERE YEAR(Date) = 2013 AND MONTH(?) = 'June'

我不能只选择日期范围,因为不同的月份有不同的天数。按照数字(即1月为1)或类似方法选择月份是理想的。

如何在mysql语句中解决这个问题?

这些字段是日期时间字段,例如2012-12-01 00:00:00

1 个答案:

答案 0 :(得分:2)

查看效果并将您的条件写为

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

所以你只需要知道间隔的开始和长度。

注意

我的答案中最重要的部分是使用列Date而不使用此列上的函数,因此MySQL可以使用索引。