2017-09-13 76 views
0
select * from table where 1 and DATE_FORMAT(dateColumn,"%d-%m") BETWEEN "01-09" and "30-09" 

此查询返回所有数据。我只想在这些日期之间的数据,而不考虑年份。根据月份和日期搜索数据Mysql

在表中dateColumn是yyyy-mm-dd。

回答

1

你需要做的比较为MM-DD,不是DD-MM:

select * 
from table 
where DATE_FORMAT(dateColumn, '%m-%d') BETWEEN '09-01' and '09-30' 

或者,这种情况下,你可能只是做:

where month(dateColumn) = 9 
+0

日期过滤器不仅需要一个月。就像我想要的月份1到15之间的数据。 –

+0

@DanishKundra。 。 。第一个查询应该做你想要的。 –

1

试试这个:

SELECT * 
FROM table 
WHERE MONTH(dateColumn) = 9 
0

您可以检查月份是否为9月

select * from table where DATE_FORMAT(dateColumn,"%m") 
= '09 
0

如果你想从你的表,其中的日期的月份是9月的一天是1至30行,你实际上可以做到这一点很容易和更明确的:

SELECT 
    * 
FROM 
    table t 
WHERE 
    MONTH(t.date) = 9 and 
    DAY(t.date) BETWEEN 1 and 30 

这也是更容易理解。