MYSQL仅从表中获取特定月份的记录

时间:2015-07-17 07:54:02

标签: mysql

我想每月从mysql表中获取记录。我不想使用createDate BETWEEN "2015-04-01" and "2015-04-30"createDate > "2015-04-01" and createDate < "2015-04-30"

我试过了:

YEAR(createDate) = 2015 and MONTH(createDate) = 04  #which is not working.

任何人都可以告诉我如何为任何特定月份编写查询。?

1 个答案:

答案 0 :(得分:1)

应该是

MONTH(createDate) = 4

然而方法

`createDate >= "2015-04-01" 
and createDate <= "2015-04-30"` 

要好得多,因为它会使用索引,使用YEARMONTH函数时不会使用索引。对于一个小的数据集,但是对于大型数据集来说它可能会过度,而且查询会非常慢。

你可以把它变成动态的东西

where 
createDate >=  date_format(curdate(),'%Y-%m-01')
and
createDate <=  last_day(curdate()) 

对于特定月份,您可以将查询构造为

where 
createDate >=  date_format(curdate(),'%Y-04-01')
and
createDate <=  last_day(date_format(curdate(),'%Y-04-01'))