先补充最终问题及总结,细节见下方案例 (v3实际错误定位点) FROM上方所使用到TO_DATE的转换栏位中有无法转换成日期格式的数据导致。。 为什么能够在数据库工具查询,但是帆软会报错? -->因为PLSQL(数据库工具)查询只显示前50行数据,帆软会抓取所有的数据..所以没有在第一时间发现. 最后感谢【CD20160914】大佬的解答~ --V1 报错截图: (v1错误定位..)问题基本可以锁定在最下方的两个语句,除了使用下方语句的方案,还有使用to_char(to_date(变量),'YYYYMMDD HH24MISS')的方案,以及将两边的栏位都分别转换为date或char的方式,运行结果都是在数据库工具可以执行,但是在帆软报同样的错误 执行语句如下: SELECT DISTINCT LH.PRODUCTNAME, LH.STAGENAME, NVL(OEE.OA_STATION_CODE,OEE.STATION_CODE) STATION, BE.EQPTYPE, EH.EQPID, EH.EVENTTIME, (SELECT DISTINCT B.CUSTDATA FROM EQP_STATE_HIST A,DATA_MAPPING B WHERE A.EQPID = EH.EQPID AND A.EQPSTATE = B.DATA AND B.DATATYPE = 'OEEEQPSTATUS' AND A.EVENTTIME = (SELECT MAX(EVENTTIME) FROM EQP_STATE_HIST WHERE EQPID = EH.EQPID AND EVENTTIME <= EH.EVENTTIME) ) AS STATUS, (SELECT MAX(A.EVENTTIME) FROM EQP_STATE_HIST A,YIBU_DATA_MAPPING B WHERE A.EQPID = EH.EQPID AND B.DATATYPE = 'OEEEQPSTATUS' AND A.EQPSTATE = B.DATA AND A.EVENTTIME (SELECT MIN(TO_DATE(A.PRESTATETIME)) FROM EQP_STATE_HIST A,DATA_MAPPING B WHERE A.EQPID = EH.EQPID AND B.DATATYPE = 'OEEEQPSTATUS' AND A.EQPSTATE = B.DATA AND A.EVENTTIME FROM EQP_STATE_HIST EH LEFT JOIN LOT_STEP_HIST LH ON LH.EQPID = EH.EQPID LEFT JOIN BASE_EQP BE ON BE.EQPID = EH.EQPID RIGHT JOIN MESOEEMAINTENANCE OEE ON OEE.EQPID = EH.EQPID AND OEE.SHOW_FLAG = 'Y' WHERE 1=1 ${if(len(STARTDATE)=0,""," AND TO_CHAR(EH.EVENTTIME,'YYYYMMDD HH24MISS') >= '"+STARTDATE+"'||' 073000'")} ${if(len(ENDDATE)=0,""," AND TO_CHAR(EH.EVENTTIME,'YYYYMMDD HH24MISS') < '"+ENDDATE+"'||' 073000'")} --v2 补充变量格式设置以及传参格式 见下图,STARTDATE的格式设置为日期型(yyyyMMdd),公式使用TODAY() |