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

如何在SQL中获取上月22日的日期?

获取上月22日的SQL实现方案

不同数据库的语法略有差异,以下是主流数据库的实现方式:

MySQL/MariaDB

通过日期格式化固定日部分为22,同时回退一个月:

SELECT 
    DATE_FORMAT(DATE_SUB(CURRENT_DATE(), INTERVAL 1 MONTH), '%Y-%m-22') AS last_month_22nd;

逻辑:DATE_SUB(CURRENT_DATE(), INTERVAL 1 MONTH) 得到上月的当前日期,再用DATE_FORMAT将日部分强制替换为22,确保结果始终是上月22日。

SQL Server

先定位上月第一天,再累加21天得到22日(自动处理跨年场景):

SELECT 
    DATEADD(DAY, 21, DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()) - 1, 0)) AS last_month_22nd;

逻辑:DATEDIFF(MONTH, 0, GETDATE()) - 1 计算出上月相对于基准日期的月数,DATEADD转换为上月第一天,最后加21天得到上月22日。

PostgreSQL

基于当月第一天回退一个月,再累加21天:

SELECT 
    (DATE_TRUNC('month', CURRENT_DATE) - INTERVAL '1 month') + INTERVAL '21 days' AS last_month_22nd;

逻辑:DATE_TRUNC('month', CURRENT_DATE) 获取当月第一天,减1个月得到上月第一天,加21天即为上月22日。

Oracle

截断到上月第一天后累加21天:

SELECT 
    TRUNC(ADD_MONTHS(SYSDATE, -1), 'MM') + 21 AS last_month_22nd
FROM DUAL;

逻辑:ADD_MONTHS(SYSDATE, -1) 回退一个月,TRUNC(..., 'MM') 截断到上月第一天,加21天得到上月22日。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 15:22:03