You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Oracle SQL中to_date函数传入空字符串的返回值是什么?

在Oracle SQL中,将空字符串传入TO_DATE函数会返回什么?

哥们,这个问题我之前排查bug的时候正好遇到过,在Oracle SQL里把空字符串传给TO_DATE('', 'YYYY-MM-DD')的话,根本不会返回什么日期值——直接就会抛出错误啦!

具体细节给你拆解下:

  • Oracle 会把空字符串''等价于NULL处理,但TO_DATE函数在指定了格式掩码的情况下,不接受NULL作为第一个输入参数。执行这类语句时,通常会触发类似ORA-01841: (full) year must be between -4713 and +9999, and not be 0或者ORA-01858: a non-numeric character was found where a numeric was expected的错误,具体错误码可能因Oracle版本略有差异,但核心原因都是输入参数无效。
  • 你可以自己跑个测试验证下,执行这段SQL:
    SELECT TO_DATE('', 'YYYY-MM-DD') FROM DUAL;
    
    刚运行就会收到报错提示,完全不会返回任何有效日期结果。
  • 如果你的业务场景里可能出现空字符串的输入,建议提前做处理,比如用NVL把空字符串替换成一个合法的默认日期,或者用条件判断返回NULL,示例如下:
    -- 替换为默认日期
    SELECT TO_DATE(NVL(your_input_col, '1900-01-01'), 'YYYY-MM-DD') FROM your_table;
    
    -- 空输入时返回NULL
    SELECT CASE 
             WHEN your_input_col IS NOT NULL AND your_input_col != '' 
             THEN TO_DATE(your_input_col, 'YYYY-MM-DD') 
           END 
    FROM your_table;
    

内容的提问来源于stack exchange,提问作者Nelwin Jacob

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 07:54:16