新手求救 ! oracle日期问题 ~~~
select v.categoryid,
v.workcategoryid,
sum(case when to_number(sysdate) > to_number(to_date(v.servicedate,'yyyy-MM-dd')) and to_number(sysdate) < to_number(add_months(to_date(v.servicedate,'yyyy-MM-dd'),v.cycletime/30)) and to_number((add_months(to_date(v.servicedate,'yyyy-MM-dd'),v.cycletime/30) - sysdate)) >to_number(add_months(sysdate,v.warncount/30)) then 1 else 0end) count1,
sum(case when to_number(add_months(to_date(v.servicedate,'yyyy-MM-dd'),v.cycletime/30) - sysdate) >= to_number(add_months(sysdate,v.warncount/30)) and to_number(add_months(to_date(v.servicedate,'yyyy-MM-dd'),v.cycletime/30) - sysdate) < to_number(add_months(to_date(v.servicedate,'yyyy-MM-dd'),v.cycletime/30)) then 1 else 0 end) count2,
sum(case when sysdate > add_months(to_date(v.servicedate,'yyyy-MM-dd'),v.cycletime/30) or to_date(to_date(v.servicedate,'yyyy-MM-dd')) =to_date(null) then 1 else 0 end) count3, count(v.id) allcount
from (select rownum rownumber,后面的就不写了 主要就是上面的日期大小,怎么写,v.warncount和v.cycletime都是number型 单位天 求大侠帮忙啊 我还没转正!!!!其实就是一个上次维修日期v.servicedate, 预期维修日期(v.servicedate+周期(v.cycletime)),周期:v.cycletime, 提醒日期v.warncount之间的问题,在线等了~!
------解决方案--------------------日期如果是date 类型可以直接比较,如果都是字符也可以直接比较。
如果一个是字符型另一个是date型
则将一个转换成与另一个相同类型的再比较
select to_date('2012-11-09 09:17:17','yyyy-mm-dd hh24:mi:ss') from dual;
select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;
------解决方案--------------------SELECT TO_CHAR(SYSDATE,'DD') FROM DUAL