我想每月从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.


谁能告诉我如何写特定月份的查询?

最佳答案

它应该是

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'))

10-07 20:35