【问题标题】:Getting Error with Date Format in To_CharTo_Char 中的日期格式出错
【发布时间】:2016-01-27 00:16:24
【问题描述】:

我在第二个脚本中遇到错误。请解释为什么我在第二个脚本中出现错误。

从 LCL_SHR_IncidentIntegrationInt 中选择 count(*),其中 外部系统 = 'IPSOFT' 和 (to_char(sysdate,'YYYYMMDDHH24MISS')-to_char(fn_adjusted_date(CREATE_DATE),'YYYYMMDDHH24MISS')) > 180;

O/P : 122797

从 LCL_SHR_IncidentIntegrationInt 中选择 count(*),其中 外部系统 = '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 - “无效号码” *原因:指定的号码无效。 *操作:指定一个有效的数字。

【问题讨论】:

  • 您将两个日期转换为字符串,然后尝试从另一个字符串中减去一个。
  • 您认为“27-10-2015 11:07:46”减去“27-10-2015 10:07:46”的数学表达式会得到什么结果?

标签: oracle date to-char sysdate sysdatetime


【解决方案1】:

第一个查询有效,因为 Oracle 能够将字符隐式转换为数字并与 180 进行比较。另一个不能,因为 : 和 - 不能隐式转换为数字。 对于timestampdiffdatediff 等情况,您应该使用日期和时间函数。更多功能在这里 - https://docs.oracle.com/cd/E17952_01/refman-5.1-en/date-and-time-functions.html

【讨论】:

  • 感谢您的回答
  • 如果解决了您的问题,请您投票作为正确答案吗?谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-06-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-28
相关资源
最近更新 更多