请问如下语句如何改成上月最后一天的23:59:59秒呢?
select to_date(trunc(add_months(sysdate,-1),'mm'))firstday,to_date(last_day(add_months(sysdate,-1)))last_day from dual;
neyhig 发布于 2021-1-25 10:26
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共3回答
最佳回答
0
杰杰1108Lv6初级互助
发布于2021-1-25 10:32(编辑于 2021-1-25 11:32)

select to_date(trunc(add_months(sysdate,-1),'mm'))firstday,to_date(last_day(add_months(sysdate,-1)))last_day,

( trunc(sysdate, 'mm'))-(1/(24*60*60)) AS lastday1


from dual;

image.png

  • neyhig neyhig(提问者) 请问为什么lastday1执行出来是11月30日了?不应该是12月31日吗
    2021-01-25 10:42 
  • 杰杰1108 杰杰1108 回复 neyhig(提问者) select to_date(trunc(add_months(sysdate,-1),\'mm\'))firstday,to_date(last_day(add_months(sysdate,-1)))last_day, ( trunc(sysdate, \'mm\')-1)-(1/(24*60*60)) AS lastday1, from dual;
    2021-01-25 10:50 
  • neyhig neyhig(提问者) 回复 杰杰1108 又变成12月30日了…没有31了…这个语句难道有31号那天还得手动改吗?
    2021-01-25 10:58 
  • 杰杰1108 杰杰1108 回复 neyhig(提问者) 您可真逗
    2021-01-25 11:33 
最佳回答
0
张洪威Lv6高级互助
发布于2021-1-25 10:30

select to_char(last_day(add_months(sysdate,-1)),'yyyy-MM-dd')||' 23:59:59' last_day from dual

image.png

  • neyhig neyhig(提问者) 请问一定要改成to_char吗?t.adddate between to_date(trunc(add_months(sysdate,-1),\'mm\')) and to_date(last_day(add_months(sysdate,-1)))我怕前后格式会不会不一样,语句判断不了了?
    2021-01-25 10:35 
  • 张洪威 张洪威 回复 neyhig(提问者) 用楼下的方法吧。
    2021-01-25 10:36 
最佳回答
0
maoningLv5初级互助
发布于2021-1-25 11:00(编辑于 2021-1-25 11:01)

select last_day(trunc(sysdate))+1-(1/(60*60*24)) last_day from dual;


last_day(trunc(sysdate))一个月的最后一天(年月日格式)

+1就变成了下个月的第一天

-(1/(60*60*24))就是减去一秒钟

  • neyhig neyhig(提问者) 运行出来是1月31日哎…还是不对
    2021-01-25 11:15 
  • maoning maoning 回复 neyhig(提问者) 你要啥?12月?
    2021-01-25 11:27 
  • maoning maoning 回复 neyhig(提问者) select last_day(add_months(trunc(sysdate),-1))+1-(1/(60*60*24)) last_day from dual;
    2021-01-25 11:29 
  • neyhig neyhig(提问者) 回复 maoning 是的 要每个月自动获取的是上个月的数据。现在一月份获取的就是十二月的
    2021-01-25 11:37 
  • 3关注人数
  • 506浏览人数
  • 最后回答于:2021-1-25 11:32
    请选择关闭问题的原因
    确定 取消
    返回顶部