你不是寫出來了么?
專注于為中小企業(yè)提供成都網(wǎng)站建設、網(wǎng)站設計服務,電腦端+手機端+微信端的三站合一,更高效的管理,為中小企業(yè)建鄴免費做網(wǎng)站提供優(yōu)質(zhì)的服務。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了上1000家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設實現(xiàn)規(guī)模擴充和轉變。
to_date( to_char(sysdate,'YYYY-MM')|| '-01','YYYY-MM-DD')取得月初
add_months(to_date( to_char(sysdate,'YYYY-MM')|| '-01','YYYY-MM-DD') ,1) 取得下月初
具體 where 子句如下
oper_date = to_date( to_char(sysdate,'YYYY-MM')|| '-01','YYYY-MM-DD')
and oper_date add_months(to_date( to_char(sysdate,'YYYY-MM')|| '-01','YYYY-MM-DD') ,1)
要設置兩個job,interval分別是TRUNC(LAST_DAY(SYSDATE))+1/24(每月最后一天的1點)和'NEXT_DAY(TRUNC(SYSDATE ), ''SATURDAY'' ) + 1/24(每周6的1點)執(zhí)行
不過要避免月末最后一天是周六的情況
begin
sys.dbms_job.submit(job = :job,
what = 'sp_proc;',
interval = 'TRUNC(LAST_DAY(SYSDATE))+1/24');
commit;
end;
select trunc(add_months(sysdate,-1),'mm') first_day,last_day(add_months(sysdate,-1)) last_day from dual;
你的查詢應該這樣寫:
select * from tabname where t between to_date('20130901','yyyymmdd') and to_date('20130930','yyyymmdd');
不建議在查詢條件中寫入變量,如
select * from tabname where t between trunc(add_months(sysdate,-1),'mm') and last_day(add_months(sysdate,-1));
這其中sysdate是個變化的量,不建議使用。
Select last_day(add_months(sysdate,-1)) from dual;得到上月最后一天
add_months(sysdate,-1) from dual;得到距當前時間一個月的時間(-1是上一個月,1是下一個月)
Select last_day(sysdate) from dual;得到當前月的最后一天
不知道你是否明白了?