如何取上个月的今天的前一天的问题,有好的办法么,工作中遇到的,请大家帮忙(请想好在回答,有好种情况比如闰月之类)?
请大家帮忙
[解决办法]
再简化一下SQL
with t as (select to_date('20010302','yyyymmdd') d from dual unionselect to_date('20010330','yyyymmdd') d from dual unionselect to_date('20080302','yyyymmdd') d from dual unionselect to_date('20080330','yyyymmdd') d from dual unionselect to_date('20110430','yyyymmdd') d from dual unionselect to_date('20110630','yyyymmdd') from dual) -- 上半部分是用来构造测试用数据的语句,实际应用中不要引用,只需要引用下半部分即可。范例中表名是T,列名是D。select case when to_char(add_months( d - 1 , -1),'dd') + 1 = to_char(d,'dd') then add_months( d - 1 , -1) -- 正常的前1月的日期减1则为结果 else null -- 前1月该日期的前1天,则返回NULL endfrom t;