日期:2014-05-17  浏览次数:20779 次

oracle中非自然月的问题
SQL code
  Where TRUNC(DATA_COMPLETE.WORK_DATE-interval '25' day ,'mm')=trunc(sysdate,'mm')
我想按照财务月来统计,上月26日至本月25日为统计区间。刚才用上面的语句,当前日期是25之后的话就没问题,如果当前日期是25之前,统计出来的结果就不对了。现在脑子有点木,请高手指教。

------解决方案--------------------
where DATA_COMPLETE.WORK_DATE>case
when sysdate >to_date(to_char(sysdate, 'yyyymm') || '26', 'yyyymmdd') then
to_date(to_char(sysdate, 'yyyymm') || '26', 'yyyymmdd')
else
add_months(to_date(to_char(sysdate, 'yyyymm') || '26',
'yyyymmdd'),
1)
end;
改成这样行不行