(CASE WHEN (SELECT COUNT(*) FROM P_AUDIT_WORK_PROCESSTABLE D WHERE P_PUBLIC_POLICY.UNITCODE=D.UNITCODE  "+
                "AND P_PUBLIC_POLICY.APPLYNO=D.APPLYNO AND P_PUBLIC_POLICY.APPLYENDORSENO= D.APPLYENDORSENO "+
                "AND D.DEADLINE IS NOT NULL AND D.NEWFLAG='0' ) =0 THEN '21000101' ELSE (SELECT TO_CHAR(DEADLINE,'YYYYMMDD') FROM P_AUDIT_WORK_PROCESSTABLE D WHERE P_PUBLIC_POLICY.UNITCODE=D.UNITCODE  "+ 
                "AND P_PUBLIC_POLICY.APPLYNO=D.APPLYNO AND P_PUBLIC_POLICY.APPLYENDORSENO= D.APPLYENDORSENO  "+
                "AND D.DEADLINE IS NOT NULL AND D.NEWFLAG='0') END ) < SYSDATE   
本地window7环境下执行没有问题,发布到linux环境下就报:java.sql.SQLException: ORA-01861: literal does not match format string
请高手提供一下解决方案。

解决方案 »

  1.   

    后台sql===:SELECT APPLYNO,
           APPLYENDORSENO,
           (SELECT APPLYENDORSENO
              FROM P_PUBLIC_POLICY B
             WHERE B.APPLYNO = P_PUBLIC_POLICY.APPLYNO
               AND B.GENERATEORDER = 0
               AND B.STATUS = '3') AS NEWAPPLYENDORSENO,
           POLICYNO,
           UNITCODE,
           (SELECT UNITNAME
              FROM D_UNIT
             WHERE UNITCODE = P_PUBLIC_POLICY.UNITCODE) AS LK_UNITCODE,
           HANDLERCODE,
           (SELECT HANDLERNAME
              FROM D_HANDLER
             WHERE HANDLERCODE = P_PUBLIC_POLICY.HANDLERCODE
               AND UNITCODE = P_PUBLIC_POLICY.UNITCODE) AS LK_HANDLERCODE,
           CLASSESCODE,
           (SELECT CLASSESNAME
              FROM D_CLASSES
             WHERE CLASSESCODE = P_PUBLIC_POLICY.CLASSESCODE) AS CLASSESNAME,
           STATUS,
           INSURANTNAME,
           STARTDATE,
           ENDDATE,
           IFGJ,
           IFSPECIAL,
           (SELECT SUM(AMOUNTCHANGE * RMBEXCHANGE)
              FROM P_PUBLIC_FEE B
             WHERE B.APPLYNO = P_PUBLIC_POLICY.APPLYNO
               AND B.APPLYENDORSENO = P_PUBLIC_POLICY.APPLYENDORSENO
               AND B.UNITCODE = P_PUBLIC_POLICY.UNITCODE) AS AMOUNT,
           (SELECT SUM(PREMIUMCHANGE * RMBEXCHANGE)
              FROM P_PUBLIC_FEE B
             WHERE B.APPLYNO = P_PUBLIC_POLICY.APPLYNO
               AND B.APPLYENDORSENO = P_PUBLIC_POLICY.APPLYENDORSENO
               AND B.UNITCODE = P_PUBLIC_POLICY.UNITCODE) AS PREMIUM,
           APPLYDATE
      FROM P_PUBLIC_POLICY
     WHERE 3 > 2
       AND 3 > 2
       AND UNITCODE = '3010100'
       AND 3 > 2
       AND 3 > 2
       AND 3 > 2
       AND 3 > 2
       AND STARTDATE >= to_date('2011-09-17', 'YYYY-MM-DD HH24:MI:SS')
       AND STARTDATE <= to_date('2011-11-16', 'YYYY-MM-DD HH24:MI:SS')
       AND 3 > 2
       AND CLASSESCODE = '11010500'
       AND ENDORSETYPE = '000'
       AND 3 > 2
       AND OPDATE >= to_date('2011-09-17', 'YYYY-MM-DD HH24:MI:SS')
       AND OPDATE <= to_date('2011-10-17', 'YYYY-MM-DD HH24:MI:SS')
       AND 3 > 2
       AND OPCODE IN (SELECT HANDLERCODE FROM D_HANDLER WHERE 3 > 2)
       AND p_public_policy.INSURETYPE not in ('5', '6')
       AND (CASE WHEN (SELECT COUNT(*)
                         FROM P_AUDIT_WORK_PROCESSTABLE D
                        WHERE P_PUBLIC_POLICY.UNITCODE = D.UNITCODE
                          AND P_PUBLIC_POLICY.APPLYNO = D.APPLYNO
                          AND P_PUBLIC_POLICY.APPLYENDORSENO = D.APPLYENDORSENO
                          AND D.DEADLINE IS NOT NULL
                          AND D.NEWFLAG = '0') = 0 THEN '21000101' ELSE
            (SELECT TO_CHAR(DEADLINE, 'yyyymmdd')
               FROM P_AUDIT_WORK_PROCESSTABLE D
              WHERE P_PUBLIC_POLICY.UNITCODE = D.UNITCODE
                AND P_PUBLIC_POLICY.APPLYNO = D.APPLYNO
                AND P_PUBLIC_POLICY.APPLYENDORSENO = D.APPLYENDORSENO
                AND D.DEADLINE IS NOT NULL
                AND D.NEWFLAG = '0') END) < SYSDATE
       AND 1 = 1
       AND P_PUBLIC_POLICY.UnitCode = '3010100'
     ORDER BY APPLYNO, APPLYENDORSENO, UNITCODE报文字与格式字符串不匹配
      

  2.   

    找到原因了。< SYSDATE
    这里没处理。