传年月,如何通过SQL算出传的月的起止日期和其上一个月的起止日期? 本帖最后由 lyshrine 于 2013-05-13 10:22:30 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 declare v_month varchar2(6) :=&v_month; v_first_day varchar2(12);begin v_first_day:=to_date(v_month||'01','yyyy--mm-dd'); dbms_output.put_line(v_first_day);end;剩下的建议楼主自己尝试下吧,这个其实都很简单的。 把sysdate换成to_date(' 201301'||'01','yyyymmdd') 就可以了 SQL> set serveroutput onSQL> declare v_date varchar2(20); 2 begin 3 v_date:=&1; 4 dbms_output.put_line(to_date(v_date,'yyyy-mm')); 5 dbms_output.put_line(last_day(to_date(v_date,'yyyy-mm'))); 6 dbms_output.put_line(add_months(to_date(v_date,'yyyy-mm'),-1)); 7 dbms_output.put_line(last_day(add_months(to_date(v_date,'yyyy-mm'),-1))); 8 end; 9 /输入 1 的值: 201301原值 3: v_date:=&1;新值 3: v_date:=201301;2013-01-012013-01-312012-12-012012-12-31PL/SQL 过程已成功完成。 Toad怎么一打开,它就去连接所有数据库呢 oracle数据库中修改dba的密码问题 我要创建一个这样的视图,可是建不起来,要怎么办? in 和 not in 的优化 求一个SQL语句,达人帮帮忙了,在线等 在数据库里有一个 vchar型字段 现在想在每一个值前面加一个 0 , 该如何 请大家推荐几本书! Oracle for Linux于商业版本差别在哪里? sql语句请教 有关于Oracle存储过程的问题 ORA-00932: 数据类型不一致: 应为 NUMBER, 但却获得 AAA.TYPESTT oracle数据逐行累加
declare
v_month varchar2(6) :=&v_month;
v_first_day varchar2(12);
begin
v_first_day:=to_date(v_month||'01','yyyy--mm-dd');
dbms_output.put_line(v_first_day);
end;剩下的建议楼主自己尝试下吧,这个其实都很简单的。
SQL> declare v_date varchar2(20);
2 begin
3 v_date:=&1;
4 dbms_output.put_line(to_date(v_date,'yyyy-mm'));
5 dbms_output.put_line(last_day(to_date(v_date,'yyyy-mm')));
6 dbms_output.put_line(add_months(to_date(v_date,'yyyy-mm'),-1));
7 dbms_output.put_line(last_day(add_months(to_date(v_date,'yyyy-mm'),-1)));
8 end;
9 /
输入 1 的值: 201301
原值 3: v_date:=&1;
新值 3: v_date:=201301;
2013-01-01
2013-01-31
2012-12-01
2012-12-31PL/SQL 过程已成功完成。