【发布时间】:2014-11-08 05:51:36
【问题描述】:
SQL Case能否显示操作,返回to_date函数的结果,作为else条件的结果?
select m.movie_title,c.copy_id,
case
when r.RENT_RETURN_DATE IS NULL
then 'not returned'
else (to_date(r.RENT_RETURN_DATE,'dd-mon-yyyy') - to_date(r.RENT_DUE_DATE,'dd-mon-yyyy'))
end AS "Days Late"
from copy c,movie m,member mem,rental r
where mem.member_no=r.member_no and c.copy_id = r.copy_id
and c.movie_id=m.movie_id and mem.member_no=102
// (to_date(r.RENT_RETURN_DATE,'dd-mon-yyyy') - to_date(r.RENT_DUE_DATE,'dd-mon-yyyy')) ----返回一个整数 //
当我执行上述查询时,会显示以下错误:
错误报告-
SQL 错误:ORA-00932:不一致的数据类型:预期的 CHAR 得到了 NUMBER 00932. 00000 - “不一致的数据类型:预期的 %s 得到了 %s”
【问题讨论】:
-
RENT_RETURN_DATE是什么数据类型?如果那已经是DATE,那么应用to_date()将date转换为date完全没用(实际上这是一个等待发生的错误)