如何从今天起第6个月前准确获取数据?
例如。现在是2019年5月,我希望确切的数据是6个月前的2018年12月。
所以我尝试编写以下代码:
SELECT * from table WHERE MONTH(UpdatedDate) = MONTH(CURDATE() - INTERVAL 5 MONTH);
问题:这向我显示了所有年份的结果,其中包含特定月份。 (例如; 2014年12月,2015年12月,2016年12月,依此类推)。
因此,从尝试解决问题开始,我一直认为这是因为我需要确保确定年份。但是,在我的示例中,不能将年份设置为当前年份,因为6个月前的2019年5月的结果是2018年12月。
因此,我想问一下如何编写它,以便我可以在6个月前获得数据。
答案 0 :(得分:3)
尝试此查询。
SELECT * from table WHERE MONTH(UpdatedDate) = MONTH(CURDATE() - INTERVAL 5 MONTH) AND YEAR(UpdatedDate) = YEAR(CURDATE() - INTERVAL 5 MONTH);
查询的问题是您仅基于月份的搜索数据,因此获得了所有年份的数据。
尝试按上述查询中的说明获取年份和月份的数据。
答案 1 :(得分:1)
您还可以:
SELECT * FROM table
WHERE DATE_FORMAT(UpdatedDate,'%Y-%m')=DATE_FORMAT(CURDATE()-INTERVAL 5 MONTH,'%Y-%m');