ORA-01802: Юлианская дата выходит за пределы допустимого диапазона, хотя оператор выбора не включает манипулирование датой - PullRequest
1 голос
/ 30 октября 2019

Я получил ORA-01802: Julian date is out of range при выполнении оператора выбора ниже, который не имеет ничего общего с датами

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

...