【问题标题】:INVALID NUMBER ERROR WHIE USING TO_NUMBER使用 TO_NUMBER 时出现无效号码错误
【发布时间】:2023-02-23 16:32:07
【问题描述】:
SELECT TO_NUMBER(TO_CHAR( TO_DATE(SUBSTR(UPDATED_DATE,1,8),'DD/MM/RRRR'),'RRRR MM DD')) FROM tw_edu_infra_amenities;

SELECT TO_NUMBER(TO_CHAR( TO_DATE(SUBSTR(UPDATED_DATE,1,8),'DD/MM/RRRR'),'RRRRMMDD')) AS NEW_DATE FROM tw_edu_infra_amenities;

第一个查询不起作用,第二个查询只是通过删除 to_char.why 中日期格式的空格来工作?

【问题讨论】:

    标签: sql oracle oracle11g oracle-sqldeveloper


    【解决方案1】:

    因为 - 当您应用格式模型 RRRR MM DD 时 - 它会产生诸如 2023 02 23 之类的值。如果将 TO_NUMBER 应用于它,则会出现错误:

    SQL> select to_number('2023 02 23') result from dual;
    select to_number('2023 02 23') result from dual
                     *
    ERROR at line 1:
    ORA-01722: invalid number
    

    格式模型中没有空格,值为20230223转换为有效数字:

    SQL> select to_number('20230223') result from dual;
    
        RESULT
    ----------
      20230223
    
    SQL>
    

    【讨论】:

      【解决方案2】:

      根据我的理解,您需要的是,我认为您应该使用 extract 函数。

      select to_char(extract(year from date_updated))||' '||
        to_char(extract(month from date_updated),'00')||' '||
        to_char(extract(day from date_updated),'00')
      from x_table;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-08-29
        • 1970-01-01
        • 2016-08-18
        • 2018-07-05
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多