) Ich bin in diesem "ORA-01850" Fehler nur in der LOGIN_TIME Teil meiner Abfrage. Ich glaube, das ist, weil einige Leute in meinem Team vergessen, sich abzumelden das Ende ihrer Schicht und damit ihre Login-Zeit ist mehr als 24 Stunden für einige dieser Datenfelder (was sollte es nicht).ORA-01850 Fehler bei TO_NUM (TO_CHAR (TO_DATE Funktion
Also im Grunde, was ich möchte meine Abfrage zu tun ist, lesen Sie die Login-Zeit und wenn es 24 Stunden überschreitet dann die Zeit reduzieren wieder auf 24 Stunden, so dass es dann in Sekunden umgerechnet werden kann.
denke ich, dass die Fehler korrigieren? Aber wie mache ich das auch tun?
SELECT
CALL_DATE as "Date"
, TO_NUMBER(TO_CHAR(TO_DATE(CALL_TIME,'hh24:mi:ss'),'sssss'))/86400 as "Time"
, AGENT_GROUP as "Agent Group"
, AGENT_NAME as "Agent Name"
, STATE as "State"
, REASON_CODE as "Reason Code"
, TO_NUMBER(TO_CHAR(TO_DATE(LOGIN_TIME,'hh24:mi:ss'),'sssss'))/86400 as "Login Time"
, TO_NUMBER(TO_CHAR(TO_DATE(READY_TIME,'hh24:mi:ss'),'sssss'))/86400 as "Ready Time"
, TO_NUMBER(TO_CHAR(TO_DATE(NOT_READY_TIME,'hh24:mi:ss'),'sssss'))/86400 as "Not Ready Time"
FROM DB.AGENT_DETAILS
WHERE
AGENT_GROUP in ('Sales')
and TRUNC(CALL_DATE) BETWEEN '01-January-2017' and TRUNC(SYSDATE)
Was ist der Datentyp von 'CALL_TIME',' LOGIN_TIME', 'READY_TIME' und' NOT_READY_TIME'? Wenn sie VARCHAR2 sind, bedeutet "ORA-01850 hour zwischen 0 und 23", dass mindestens eine Zeile mit der Zahl 24 oder höher beginnt; Wenn es sich um DATEs handelt, bedeutet dies, dass Sie ein implizites Konvertierungsproblem erhalten (d. h. wenn sie bereits DATEs sind, sollten Sie für sie kein TO_DATE aufrufen). –
Wenn sie bereits DATEs sind, ist eine alternative Möglichkeit, um zu bekommen, was Sie brauchen, '(call_time-trunc (call_time)) * 86400', die die Notwendigkeit für so viele Datentyp-Konvertierungen beseitigt. –
Ja, sie sind VARCHAR2. Und ja, es ist der Fehler "ORA-01850 muss zwischen 0 und 23 Stunden sein". Also, wie füge ich eine Klausel hinzu, um die Zeiten, die größer sind, zurück in 24 zu konvertieren? Das ist es, was ich versuche zu tun. – Melanie