我在第二个脚本中得到错误。请解释为什么我在第二个脚本中得到错误。
select count(*) from LCL_SHR_IncidentIntegrationInt whereexternalsystem = 'IPSOFT'and (to_char(sysdate,'YYYYMMDDHH24MISS')-to_char(fn_adjusted_date(CREATE_DATE),'YYYYMMDDHH24MISS'))> 180;
O/p: 122797
select count(*) from LCL_SHR_IncidentIntegrationInt whereexternalsystem = '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 -"无效号码"*原因:指定的号码无效。*动作:指定一个有效的号码
第一个查询有效,因为Oracle能够隐式地将字符转换为数字并与180进行比较。另一个则没有,因为:和-不能隐式转换为number。对于timestampdiff
或datediff
这样的情况,应该使用日期和时间函数。这里有更多的函数- https://docs.oracle.com/cd/E17952_01/refman-5.1-en/date-and-time-functions.html