我想每月从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.
任何人都可以告诉我如何为任何特定月份编写查询。?
答案 0 :(得分:1)
应该是
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'))