oracle查询时间差应该用什么函数

表里面有两个字段,in_date,out_date,如何查两个的差值,out_date有的是空的,有的显示0001-01-01(实际上也是空值),有的有值,我是这样写的nvl2(out_date,to_date(to_char(out_date,'YY-MM-DD'),''YY-MM-DD)-to_date(to_char(in_date,'YY-MM-DD'),''YY-MM-DD),to_date(to_char(sysdate,'YY-MM-DD'),''YY-MM-DD)-to_date(to_char(in_date,'YY-MM-DD'),''YY-MM-DD)),查询日期差几天,但是排除不了out_date显示0001-01-01这种,要用什么函数才好
具体要怎么写才能简洁高效

首先 , 0001-01-01 00:00:00 并不是空日期

这下 你就知道如何 办了,就是 一个最小的日期值追问

如何办

追答

判断

case when out_date is null or out_date = to_date('0001-01-01','yyyy-mm-dd')
then trunc(sysdate)-trunc(in_date)
else trunc(out_date) - trunc(in_date)
end

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-07-26
select trunc(out_date-in_date) from ...;
第2个回答  2013-07-26
NVL 和 decode函数并用