传年月,如何通过SQL算出传的月的起止日期和其上一个月的起止日期?
本帖最后由 lyshrine 于 2013-05-13 10:22:30 编辑 如题:
传的格式为YYYYMM
比如我传一个 201301
得到1月份的起止日期 2013-01-01 2013-01-31
和1月份所在的年 2013 以及 月份 01
得到1月份上一个月的 起止日期 2012-12-01 2012-12-31
和12月份所在的年 2012 以及 月份 12
以前是固定的sysdate,现在需要改成传年月的
select to_char(add_months(last_day(sysdate)+1,-2),'yyyy-MM-dd') into v_lm_firstday from dual;
select to_char(add_months(last_day(sysdate),-1),'yyyy-MM-dd') into v_lm_lastday from dual;
select to_char(add_months(last_day(sysdate)+1,-1),'yyyy-MM-dd') into v_tm_firstday from dual;
select to_char(last_day(sysdate),'yyyy-MM-dd') into v_tm_lastday from dual;
select to_char(add_months(last_day(sysdate)+1,-2),'yyyy') into v_lastyear from dual;
select to_char(add_months(last_day(sysdate)+1,-2),'MM') into v_lastmonth from dual;
select to_char(add_months(last_day(sysdate)+1,-1),'yyyy') into v_thisyear from dual;
select to_char(last_day(sysdate),'MM') into v_thismonth from dual;
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;
剩下的建议楼主自己尝试下吧,这个其实都很简单的。