MySQL选择过去3个月的记录

时间:2016-02-03 09:58:10

标签: mysql

如果表格包含以下列,那么在过去3个月内从MySQL表中选择所有行的最明智的方法是什么:

| id (int) | year (int)| month (int) |

考虑到如果当前月份&年份是 2.2016 我需要选择11.2015&的所有记录。 12.2015& 1.2016

如果当前月份大于3这很容易,因为我需要选择的所有月份都在同一年,所以我可以从当前月份中减去3并运行简单查询

SELECT * FROM mytabe where year=2016 and month >= xx

3 个答案:

答案 0 :(得分:3)

Select * from mytable where STR_TO_DATE(concat(year,"-",month,"-01"),'%Y-%m-%d')>date_sub(curdate(),Interval 3 month) ;

上述查询将从今天前3个月开始获取年份和月份

答案 1 :(得分:0)

您可以按照以下选项通过这些查询选择三个记录。 columnName表示您希望选择的列数据。 tableName表示您要选择的表数据。 dateColumnName表示要选择数据的列日期库。

它将从今天起返回上个月数据。

SELECT columName FROM tableName WHERE dateColumName BETWEEN ( DATE(NOW()) - INTERVAL 1 MONTH) AND Date(Now())

它将从今天起返回上个月第二个数据。

SELECT columName FROM tableName WHERE dateColumName BETWEEN ( DATE(NOW()) - INTERVAL 2 MONTH) AND ( DATE(NOW()) - INTERVAL 1 MONTH)  

它将从今天起返回第三个月数据。

SELECT columName FROM tableName WHERE dateColumName BETWEEN ( DATE(NOW()) - INTERVAL 3 MONTH) AND ( DATE(NOW()) - INTERVAL 2 MONTH) 

可能对其他人有所帮助。

答案 2 :(得分:0)

请尝试这个

Select * from mytable where STR_TO_DATE(concat(year,"-",month,"-01"),'%Y-%m-%d')>date_sub(curdate(),Interval 3 month) ;