You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写适配全年的上月数据动态过滤SQL语句?

适配全年的动态月份过滤方案

方法一:利用日期偏移函数(推荐)

直接通过数据库内置的日期偏移函数计算上一个月的完整日期,再从中提取年和月,这种方式逻辑简洁且不易出错,适配绝大多数数据库:

以Oracle为例,修改后的过滤条件如下:

WHERE MONTH = EXTRACT(MONTH FROM ADD_MONTHS(SYSDATE, -1))
  AND YEAR = EXTRACT(YEAR FROM ADD_MONTHS(SYSDATE, -1))

其他数据库的对应写法:

  • MySQL:用DATE_SUB(SYSDATE(), INTERVAL 1 MONTH)替代ADD_MONTHS(SYSDATE, -1)
  • SQL Server:用DATEADD(MONTH, -1, GETDATE())替代ADD_MONTHS(SYSDATE, -1)

方法二:CASE语句手动判断年份和月份

如果不想依赖日期偏移函数,也可以通过CASE分支处理特殊情况:

WHERE MONTH = CASE 
                WHEN EXTRACT(MONTH FROM SYSDATE) = 1 THEN 12
                ELSE EXTRACT(MONTH FROM SYSDATE) - 1
              END
  AND YEAR = CASE 
                WHEN EXTRACT(MONTH FROM SYSDATE) = 1 THEN EXTRACT(YEAR FROM SYSDATE) - 1
                ELSE EXTRACT(YEAR FROM SYSDATE)
              END

逻辑说明:当当前月份为1月时,目标月份设为12,年份设为当前年份减1;其余月份直接取当前月份减1,年份保持不变。

内容的提问来源于stack exchange,提问作者user16400720

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 13:25:11