如何在Oracle中获取上月15日的YYYYMMDD格式日期?
Oracle获取上个月15号并格式化为YYYYMMDD格式
直接使用以下SQL语句即可得到目标结果:
SELECT TO_CHAR(ADD_MONTHS(TRUNC(SYSDATE, 'MM'), -1) + 14, 'YYYYMMDD') AS LAST_MONTH_15TH FROM DUAL;
语句拆解说明:
TRUNC(SYSDATE, 'MM'):将当前日期截断至当月第一天,例如当前日期为2024-05-20时,返回2024-05-01ADD_MONTHS(..., -1):对截断后的日期执行减1个月操作,得到上个月的第一天,即2024-04-01+14:上个月第一天加14天,直接得到上个月15号(因为当月第一天是1号,加14天后正好是15号)TO_CHAR(..., 'YYYYMMDD'):将日期类型转换为YYYYMMDD格式的字符串
补充说明:
Oracle的ADD_MONTHS函数会自动处理跨年、不同月份天数差异的场景:
- 若当前是1月,执行后会得到去年12月15号
- 若上个月是2月(无论平闰年),也能正确返回2月15号
你也可以用另一种基于月末日期的写法,逻辑等价但稍显复杂:
SELECT TO_CHAR(LAST_DAY(ADD_MONTHS(SYSDATE, -1)) - (EXTRACT(DAY FROM LAST_DAY(ADD_MONTHS(SYSDATE, -1))) - 15), 'YYYYMMDD') AS LAST_MONTH_15TH FROM DUAL;
内容的提问来源于stack exchange,提问作者Sakura56
相关产品推荐
相关产品推荐

