2011-05-07 72 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