我在第二个脚本中遇到错误。请解释为什么我在第二个脚本中收到错误。
从LCL_SHR_IncidentIntegrationInt中选择count(*) externalsystem =' IPSOFT' 和(to_char(sysdate,' YYYYMMDDHH24MISS ') - to_char(fn_adjusted_date(CREATE_DATE),' YYYYMMDDHH24MISS '))&gt ; 180;
O / P:122797
从LCL_SHR_IncidentIntegrationInt中选择count(*) externalsystem =' IPSOFT' 和(to_char(sysdate,' DD-MM-YYYY HH24:MI:SS ') - to_char(fn_adjusted_date(CREATE_DATE),' DD-MM -YYYY HH24:MI:SS '))> 180;
O / P: ORA-01722:无效的号码 01722. 00000 - "无效数字" *原因:指定的号码无效。 *操作:指定有效数字。
答案 0 :(得分:2)
第一个查询有效,因为Oracle能够隐式地将字符转换为数字并与180进行比较。另一个查询不能,因为:和 - 不能隐式转换为数字。
对于timestampdiff
或datediff
等情况,您应该使用日期和时间函数。这里有更多功能 - https://docs.oracle.com/cd/E17952_01/refman-5.1-en/date-and-time-functions.html