遇到一个恶心的MySQL过滤需求,需要过滤上个月的数据如何解决?

时间:2024-05-06 21:55:31

SQL查询中添加一个条件来过滤出上个月的数据,需要首先确定“上个月”对应的 period_code 值。假设当前月份是2024年4月,上个月(2024年3月)的 period_code 将是“202403”。当然,如果你希望这个查询能够自动适应每次执行时的当前日期,你将需要在SQL中动态生成这个日期。

这里有一个示例,它展示了如何修改你的SQL语句来加入这个条件。这个例子基于MySQL数据库;如果你使用的是其他数据库,可能需要稍作调整:

SELECT station_name, fraudulent_order_index
FROM epm_manage_fraudulent_order
WHERE county_code = '3340720'
  AND deleted = 0
// 恶心的过滤条件
  AND period_code = DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL 1 MONTH), '%Y%m');

这条SQL语句做了以下几点:

  1. DATE_SUB(CURDATE(), INTERVAL 1 MONTH):这个函数从当前日期(CURDATE())减去一个月。这意味着如果今天是2024年4月任意一天,它会返回2024年3月的相同日期。
  2. DATE_FORMAT(..., '%Y%m'):将上一步得到的日期格式化为YYYYMM形式。例如,如果DATE_SUB返回的日期是2024年3月15日,DATE_FORMAT会将其转换为“202403”。
    在这里插入图片描述