问个sql问题,我需要传个日期,然后通过这个日期求上个月第一天,目前在oracle测试发现一直报错

select trunc(ADD_MONTHS(last_day(TO_DATE('2022-10-13','YYYY-MM-DD'),-2) +1) from dual

FineReport yzmxYDx35608993 发布于 2023-5-11 22:53
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共2回答
最佳回答
0
CD20160914Lv8专家互助
发布于2023-5-11 23:03

select trunc(add_months(TO_DATE('2022-10-13','YYYY-MM-DD'), -1), 'mm') first_day,

       last_day(add_months(TO_DATE('2022-10-13','YYYY-MM-DD'), -1)) last_day

  from dual

第一天和最后一天

image.png

最佳回答
0
浅吟小时光Lv4见习互助
发布于2023-5-12 09:02

ADD_MONTHS是两个参数,将“+1”改为“,+1”

其次你这里是求的这个日期对应的月倒数第二天再加上一个月,与你所描述不一致

select 

       TO_DATE(TO_CHAR(add_months(TO_DATE('2022-10-13','YYYY-MM-DD'), -1), 'YYYY-MM')||'-01','YYYY-MM-DD') first_day_1,

       last_day(add_months(TO_DATE('2022-10-13','YYYY-MM-DD'), -2))+1 first_day_2

  from dual

可以修改为这两种,一种由字符串拼接强制改为第一天,一种先减去两月找到两月前的最后一天,再加上一天即上月第一天了

  • 3关注人数
  • 288浏览人数
  • 最后回答于:2023-5-12 09:02
    请选择关闭问题的原因
    确定 取消
    返回顶部