如果表格包含以下列,那么在过去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
答案 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) ;