首页 > 解决方案 > ORA-01802: 尽管 select 语句不包括日期操作,但 Julian 日期超出范围

问题描述

ORA-01802: Julian date is out of range在执行下面的select语句时得到的,它与日期无关

SELECT
    *
FROM
    dual
WHERE
    (
        (
            ( ltrim(TO_CHAR(109,'0000') )
              || ltrim(TO_CHAR(2020,'0000') )
              || ltrim(TO_CHAR(6,'000') )
              || ltrim(TO_CHAR(601,'000') )
              || ltrim(TO_CHAR(0,'000') )
              || ltrim(TO_CHAR(805406,'000000') )
              || ltrim(TO_CHAR(729,'000') )
              || ltrim(TO_CHAR(400,'0000') )
              || ltrim(TO_CHAR(400,'0000') )
              || ltrim(TO_CHAR(938,'000') )
              || ( 0 )
              || ( '####################' ) ) = ltrim('01092020005501000505114729000000000000####################')
            AND ( 0 = 0 )
        )
        OR ( ltrim(TO_CHAR(109,'0000') )
             || ltrim(TO_CHAR(2020,'0000') )
             || ltrim(TO_CHAR(6,'000') )
             || ltrim(TO_CHAR(601,'000') )
             || ltrim(TO_CHAR(0,'000') )
             || ltrim(TO_CHAR(805406,'000000') )
             || ltrim(TO_CHAR(729,'000') )
             || ltrim(TO_CHAR(400,'0000') )
             || ltrim(TO_CHAR(400,'0000') )
             || ltrim(TO_CHAR(938,'000') )
             || ( 0 )
             || ( '####################' ) ) = (
            SELECT
                MAX(ltrim(TO_CHAR(109,'0000') )
                      || ltrim(TO_CHAR(2020,'0000') )
                      || ltrim(TO_CHAR(6,'000') )
                      || ltrim(TO_CHAR(601,'000') )
                      || ltrim(TO_CHAR(0,'000') )
                      || ltrim(TO_CHAR(805406,'000000') )
                      || ltrim(TO_CHAR(729,'000') )
                      || ltrim(TO_CHAR(400,'0000') )
                      || ltrim(TO_CHAR(400,'0000') )
                      || ltrim(TO_CHAR(938,'000') )
                      || (0)
                      || ('####################') )
            FROM
                dual
            WHERE
                ( ltrim(TO_CHAR(109,'0000') )
                  || ltrim(TO_CHAR(2020,'0000') )
                  || ltrim(TO_CHAR(6,'000') )
                  || ltrim(TO_CHAR(601,'000') )
                  || ltrim(TO_CHAR(0,'000') )
                  || ltrim(TO_CHAR(805406,'000000') )
                  || ltrim(TO_CHAR(729,'000') )
                  || ltrim(TO_CHAR(400,'0000') )
                  || ltrim(TO_CHAR(400,'0000') )
                  || ltrim(TO_CHAR(938,'000') )
                  || ( 0 )
                  || ( '####################' ) ) < ltrim('01092020005501000505114729000000000000####################')
                AND ( 0 = 1 )
        )
        OR ( ltrim(TO_CHAR(109,'0000') )
             || ltrim(TO_CHAR(2020,'0000') )
             || ltrim(TO_CHAR(6,'000') )
             || ltrim(TO_CHAR(601,'000') )
             || ltrim(TO_CHAR(0,'000') )
             || ltrim(TO_CHAR(805406,'000000') )
             || ltrim(TO_CHAR(729,'000') )
             || ltrim(TO_CHAR(400,'0000') )
             || ltrim(TO_CHAR(400,'0000') )
             || ltrim(TO_CHAR(938,'000') )
             || ( 0 )
             || ( '####################' ) ) = (
            SELECT
                MIN(ltrim(TO_CHAR(109,'0000') )
                      || ltrim(TO_CHAR(2020,'0000') )
                      || ltrim(TO_CHAR(6,'000') )
                      || ltrim(TO_CHAR(601,'000') )
                      || ltrim(TO_CHAR(0,'000') )
                      || ltrim(TO_CHAR(805406,'000000') )
                      || ltrim(TO_CHAR(729,'000') )
                      || ltrim(TO_CHAR(400,'0000') )
                      || ltrim(TO_CHAR(400,'0000') )
                      || ltrim(TO_CHAR(938,'000') )
                      || (0)
                      || ('####################') )
            FROM
                dual
            WHERE
                ( ltrim(TO_CHAR(109,'0000') )
                  || ltrim(TO_CHAR(2020,'0000') )
                  || ltrim(TO_CHAR(6,'000') )
                  || ltrim(TO_CHAR(601,'000') )
                  || ltrim(TO_CHAR(0,'000') )
                  || ltrim(TO_CHAR(805406,'000000') )
                  || ltrim(TO_CHAR(729,'000') )
                  || ltrim(TO_CHAR(400,'0000') )
                  || ltrim(TO_CHAR(400,'0000') )
                  || ltrim(TO_CHAR(938,'000') )
                  || ( 0 )
                  || ( '####################' ) ) > ltrim('01092020005501000505114729000000000000####################')
                AND ( 0 = 2 )
        )
    );

我在用着Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production

标签: sqloraclejulian-date

解决方案


推荐阅读