Oracle实现月数变更,但是最后一天不能变

Muguy 2010-08-23 05:19:47
例如,我现在有:
declare dt date
dt := '2008/02/28'
求两个月后的最后一天,即'2008/04/30'。

我现在知道的是有用两个函数(months_add()和last_day())合起来才行,能不能一步成型的。
...全文
66 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
ehsgs 2010-08-23
  • 打赏
  • 举报
回复
select last_day(add_months(to_date('2008/02/28','yyyy/mm/dd'),2)) from dual
ehsgs 2010-08-23
  • 打赏
  • 举报
回复
select last_day(add_months(sysdate, 2)) from dual


这样不就行了么
心中的彩虹 2010-08-23
  • 打赏
  • 举报
回复
[Quote=引用楼主 traysine 的回复:]
例如,我现在有:
declare dt date
dt := '2008/02/28'
求两个月后的最后一天,即'2008/04/30'。

我现在知道的是有用两个函数(months_add()和last_day())合起来才行,能不能一步成型的。
[/Quote]

--一步实现应该是不可能,只有自己写函数
SQL> create function fun_date(mon number,dt date) return date
2 as
3 v_dt date;
4 begin
5 v_dt:=last_day(dt+interval '2' month);
6 return v_dt;
7 exception
8 when others then
9 dbms_output.put_line('输入日期格式问题');
10 end;
11 /

函数已创建。

SQL> edi
已写入 file afiedt.buf

1* select fun_date(2,to_date('2008/02/28','yyyy/mm/dd')) from dual
SQL> /

FUN_DATE(2,TO_
--------------
30-4月 -08


minitoy 2010-08-23
  • 打赏
  • 举报
回复
估计是想知道有没有某个函数就实现这样的功能
gelyon 2010-08-23
  • 打赏
  • 举报
回复
add_months()和last_day()

另外,我不明白楼主说的“一步成型”是什么意思!
minitoy 2010-08-23
  • 打赏
  • 举报
回复
没有.你可以自己写个函数

17,088

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧