mysql:如何在年和月之间创建日期(无日期)

mysql:如何在年和月之间创建日期(无日期),mysql,database,Mysql,Database,如果mysql数据库中有2列:年;月份,现在我想基于年-月范围进行总和计算,而不指定日期。比如说2010-11年到2011-07年,我怎样才能实现它 SELECT * FROM TT WHERE F1 BETWEEN '2010-11' AND '2011-07' ,它不起作用。如果您希望从2010-11到2011-07的所有行,直到8月1日: SELECT * FROM `table` WHERE `date_column` BETWEEN '2010-11-01' AND '2011-0

如果mysql数据库中有2列:年;月份,现在我想基于年-月范围进行总和计算,而不指定日期。比如说2010-11年到2011-07年,我怎样才能实现它

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

,它不起作用。

如果您希望从2010-11到2011-07的所有行,直到8月1日:

SELECT * FROM `table` 
WHERE `date_column` BETWEEN '2010-11-01' AND '2011-08-01'
如果要获取1月到6月的所有行,请使用此查询:

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'

我遇到了同样的情况,并通过这样做成功地进行了管理:

SELECT * FROM `TT` WHERE CONCAT(year_column,month_column) between '201011' and '201107';

希望它对其他人也有帮助。

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