2011-05-07 39 views
2

我有一个表,如:在MySQL中获取给定月份的记录?

id  trans_date     resp_code 
------------------------------------------------ 
1  2011-02-15 12:47:09 1 
2  2011-02-24 12:47:09 1 
3  2011-02-29 12:47:09 1 
4  2011-03-11 12:47:09 1 
5  2011-03-15 12:47:09 1 
6  2011-03-22 12:47:09 1 
7  2011-04-10 12:47:09 1 
8  2011-04-11 12:47:09 1 

所有我想要的是获取给定month的所有记录。 赞一下month March[03], I should get row 4,5, and 6

在此先感谢.....

回答

14
SELECT * 
    FROM tbl 
WHERE trans_date BETWEEN '2011-03-01' AND DATE_ADD('2011-03-01', INTERVAL 1 MONTH) 

你也可以按照这个查询

SELECT * 
    FROM tbl 
WHERE MONTH(trans_date) = 3 
    AND YEAR(trans_date) = 2011 

,但它会引起全扫描从而将在大数据量的缓慢

3

你可以使用MySQL的MONTH()函数

SELECT * FROM tbl WHERE MONTH(trans_date) = 3 
+0

这对大型数据集来说非常缓慢 – andufo 2014-02-14 00:29:02

相关问题