我想每月从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"`
更好,因为它将利用索引,而在使用
YEAR
或MONTH
函数时将不使用索引。对于较小的数据集,它可以,但是对于较大的数据集,它会过大,并且查询将非常慢。您可以将其动态化为
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'))