mysql:按年份和月份(无日期)如何做日期

问题描述:

如果mysql数据库中有2列:年;月份,现在我想根据年份范围进行总和计算,而不指定日期。比如2010-11至2011-07,我怎么能意识到这一点?mysql:按年份和月份(无日期)如何做日期

SELECT * FROM TT WHERE F1 BETWEEN '2010-11' AND '2011-07' 

,它不起作用。

+1

您还需要提供每个月的第一天。 –

如果你想利用所有行2010-11至2011-07,直到八月的第一天:

SELECT * FROM `table` 
WHERE `date_column` BETWEEN '2010-11-01' AND '2011-08-01' 

使用,如果你想从一月份的全月所有行此查询到六月:

SELECT * FROM `table` 
WHERE YEAR(`date_column`)=2011 AND MONTH(`date_column`) BETWEEN 1 AND 6 

如果你想使用不同的年份,那么每年编写不同的查询:

SELECT * FROM `table` 
WHERE 
    (YEAR(`date_column`)=2010 AND MONTH(`date_column`) BETWEEN 11 AND 12) OR 
    (YEAR(`date_column`)=2011 AND MONTH(`date_column`) BETWEEN 1 AND 7) 

试试这个,如果F1是类型date

SELECT * FROM TT WHERE F1 BETWEEN '2010-11-01' AND '2011-07-31' 

的,这如果F1是类型datetime

SELECT * FROM TT WHERE F1 BETWEEN '2010-11-01 00:00:00' AND '2011-07-31 23:59:59' 

,如果年份和月份保存在不同的栏目,然后用这个

SELECT * FROM TT WHERE DATE(CONCAT(year_column, '-', month_column, '-01')) 
BETWEEN '2010-11-01' AND '2011-07-31'