当前位置: 首页 > 知识库问答 >
问题:

Oracle:避免to_date中的空值

柏阳炎
2023-03-14

但是,如果camp.start_date为NULL或没有行,那么它将引发异常-

ORA-01858:在需要数字的地方发现了一个非数字字符

camp.start_date实际上是一个VARCHAR2,我需要将它转换为日期(是的,我知道它可能应该是一个日期字段,但我没有更改它的选项)。

to_date(NVL(camp.start_date,SYSDATE), 'MM/DD/YYYY') >= 
to_date(:from_date, 'YYYY-MM-DD HH24:MI:SS')

其中camp.start_date不为null并且to_date(camp.start_date,'mm/dd/yyyy')>=to_date(:from_date,'yyyy-mm-dd hh24:mi:ss')

同样的问题。最好的办法是什么?基本上,当camp.start_date不是有效日期时,to_date会爆炸并引发错误。

共有1个答案

荣声
2023-03-14

如果start_date为NULL,则不会引发异常。

select to_date( null, 'mm/dd/yyyy' ) 
  from dual

是返回NULL的完全有效的SQL语句。

您得到的错误强烈地暗示start_date列中至少有一些行实际上不是所需格式的字符串或映射到无效日期(即字符串'13/35/2007')。您可以编写一个函数来测试字符串是否可以转换为日期,并返回转换后的日期或空值。然后可以使用它来代替to_date

CREATE OR REPLACE FUNCTION my_to_date( p_str    IN VARCHAR2,
                                       p_format IN VARCHAR2 )
  RETURN DATE
IS
BEGIN
  RETURN to_date( p_str, p_format );
EXCEPTION
  WHEN OTHERS
  THEN
    RETURN NULL;
END;
 类似资料:
  • 我想知道是否有可能在Java中“避免”空检查,以下面的代码为例: 它必须检查4次,否则代码将失败。 是否可以将语句转换为只有在没有NullPointerException时才执行的一行式语句?当出现异常时,该行应该被忽略。 这里我不是在谈论一个通用的语言特性,我是在谈论一个只有当您明确决定这样做时才会上交的特性。 例如:将是建议代码的一个片段。 在Java可能发生这样的事情吗? 如果不可能的话,在

  • 我正在尝试根据我的边2[]数组中的对象编写一个新文档。现在不幸的是,这个数组中的一些索引为空,当它击中其中一个时,它只是给了我一个NullPointerExc的。这个数组有10个索引,但在这种情况下并不需要所有的索引。我已经尝试了try的捕捉语句,希望在它遇到空值后继续,但它仍然停止执行,并且不写新文档。作为对象一部分的堆栈(sire)包含我想打印出来的数据。 这是我的代码:

  • 将编译为以下内容而不使用装箱: 因此,编译器确实特别对待,但不是在泛型类上下文中。

  • 问题内容: 我正在将时间戳字段格式化为“ DD / MM / YYYY”格式,以获取该日期的所有已处理记录。 上面的查询返回0计数。 上面的查询返回29个计数。 如果我运行: 等等… to_date格式将年份格式化为 0015 ? 如何避免将年份格式化为0015格式?我需要2015年的格式。请帮助我解决此问题。 问题答案: 截止日期(event_dt,“ DD / MM / YYYY”) 根据您对

  • 本文向大家介绍Java中避免空指针异常的方法,包括了Java中避免空指针异常的方法的使用技巧和注意事项,需要的朋友参考一下 没人会喜欢空指针异常!有什么方法可以避免它们吗?或许吧。。 本文将讨论到以下几种技术 1.Optional类型(Java 8中新引入的) 2.Objects类(Java 7中原有的) Java 8中的Optional类 它是什么? 1.Java 8中新引入的类型 2.它是作为

  • 我有如下所示的JSON 我将文件读成字符串并创建一个JSONObject,如下所示 然而,我认为我可以用try catch将语句括起来 请建议在这种情况下是否有任何合理的理由放一个长的if条件,而不是仅仅try-catch-log然后继续。 您还可以分享使用JSONException在此上下文中是否有任何“优点”吗?