id r c
A 2014-01-01 2014-01-15
B 2013-12-20 2014-01-20
C 2014-01-10
当前月份是2014年1月
想得到效果
A = C-R
B = C-当前月份第一天 如果R的日期不在当前月份内就取当前月份第一天
C = 当天日期-r 如果C是空就取当前日期(如果当前日期不在该月内,就取当前月的最后一天)
------解决思路----------------------
select c-r as A,C-TRUNC(SYSDATE,'MONTH') AS B,trunc(SYSDATE)-R AS C
FROM T
------解决思路----------------------
select id,
case
when c is not null and
to_char(r, 'yyyymm') = to_char(sysdate, 'yyyymm') then
c - r
when c is not null and
to_char(r, 'yyyymm') <> to_char(sysdate, 'yyyymm') then
c - trunc(ADD_MONTHS(LAST_DAY(SYSDATE) + 1, -1))
when c is null then
trunc(sysdate) - r
end
from t