declare interface_no1 number; interface_no2 number; interface_no3 number; interface_no4 number; result3 VARCHAR2(500); BEGIN select round(sum(PROCESS_TIME) / count(*), 2), max(PROCESS_TIME), min(PROCESS_TIME), count(*) into interface_no1,interface_no2,interface_no3,interface_no4 from assp_interface_log_2023 i where i.op_time <= (SELECT SYSDATE FROM DUAL) and i.op_time >= (SELECT SYSDATE - INTERVAL '5' DAY FROM DUAL); --输出 result3 := '接口使用速率:接口调用平均耗时'||interface_no1||'秒,调用接口总次数为'||interface_no4||'次,最小耗时'||interface_no3||'秒,最大耗时'||interface_no2||'秒'; DBMS_OUTPUT.PUT_LINE(result3); END; 为什么ora-01861
时间: 2024-03-13 13:44:16 浏览: 67
ORA-01861 错误通常是因为日期格式不正确导致的。在这个例子中,可能是因为 `i.op_time` 列的日期格式与当前会话的日期格式不一致,导致查询失败。
要解决这个问题,可以将 `i.op_time` 列的日期格式转换为当前会话的日期格式,或者将当前会话的日期格式转换为 `i.op_time` 列的日期格式。
例如,如果 `i.op_time` 列的日期格式为 `YYYY-MM-DD HH24:MI:SS`,而当前会话的日期格式为 `DD-MON-YYYY HH24:MI:SS`,则可以使用 `TO_CHAR` 和 `TO_DATE` 函数进行转换:
```
DECLARE
interface_no1 NUMBER;
interface_no2 NUMBER;
interface_no3 NUMBER;
interface_no4 NUMBER;
result3 VARCHAR2(500);
BEGIN
SELECT ROUND(SUM(NVL(PROCESS_TIME, 0)) / COUNT(*), 2),
MAX(NVL(PROCESS_TIME, 0)),
MIN(NVL(PROCESS_TIME, 0)),
COUNT(*) INTO interface_no1, interface_no2, interface_no3, interface_no4
FROM assp_interface_log_2023 i
WHERE i.op_time <= TO_DATE(TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS'), 'YYYY-MM-DD HH24:MI:SS')
AND i.op_time >= TO_DATE(TO_CHAR(SYSDATE - INTERVAL '5' DAY, 'YYYY-MM-DD HH24:MI:SS'), 'YYYY-MM-DD HH24:MI:SS');
result3 := '接口使用速率:接口调用平均耗时'||interface_no1||'秒,调用接口总次数为'||interface_no4||'次,最小耗时'||interface_no3||'秒,最大耗时'||interface_no2||'秒';
DBMS_OUTPUT.PUT_LINE(result3);
END;
```
注意:在实际开发中,应该根据实际情况选择合适的日期格式,并使用相应的函数进行转换。
阅读全文