在`nvl(sysdate-my_date_col,sysdate)期间,如何“DATE”可能发生隐式转换`NUMBER`。

时间:2017-09-24 14:20:36

标签: oracle11g

my_date_colDATE类型,my_num_colNUMBER类型。根据2个日期之间的信息差异是一个数字,这怎么可能

nvl(my_num_col,sysdate)  //syntax error "ORA-00932: inconsistent datatypes: expected NUMBER got DATE"  

nvl(sysdate-my_date_col,sysdate) // works fine

1 个答案:

答案 0 :(得分:0)

在Oracle中,日期无法转换为数字类型。在Oracle docs给出的隐式转换数据类型的矩阵中,您可以清楚地看到日期和数字不能相互转换。另外在nvl docs提到了

  

参数expr1和expr2可以具有任何数据类型。如果它们的数据类型不同,则Oracle数据库会隐式地将其中一个转换为另一个。如果无法隐式转换它们,则数据库将返回错误。

这就是为什么你在第一种情况下从数字转换为日期而不是在第二种情况下从一个日期转换为另一个日期时出错的原因。