2013-02-27 4 views
0

좋은 하루.ORA-01861 리터럴은 SELECT 문에서 형식 문자열과 일치하지 않습니다.

나는 쿼리를 실행하고 발생하고있다 :이 쿼리를 실행하고 IT 일한

ORA-01861 literal does not match format string error. 

.

SELECT * FROM GCACC_OPERATION_DETAIL WHERE id_notice in (75078741) 
AND id_analytical_center in (100000002) 
AND interface_date = '2013-06-30' 
AND generic_client = 'someGenClient' 
AND document_class = 'DOCCLA0001' 
AND accounting_tag_identifier = 1 
AND generated_actual_acc_doc 
IN (select id_accounting_document 
from gcacc_accounting_document 
where document_status = 'DOCSTA0001'); 

내 다른 쿼리는 작동하지 않는 것으로 기록됩니다.

SELECT * FROM GCACC_OPERATION_DETAIL WHERE id_notice IN (75078741) 
AND id_analytical_center in (100000002) 
AND generic_client = 'someGenClient' 
AND document_class = 'DOCCLA0001' 
AND accounting_tag_identifier = 1 
AND interface_date = '2013-06-30' 
AND ind_pending_process = 1 
AND operation_type 
IN (select cod_develop from gcacc_operation_type where ind_operation = 'B'); 

날짜 부분에 오류가 발생하기 때문에 이상하게 들릴 수 있지만 날짜 부분에는 동일한 구문을 쓰고 있습니다. 나는 어리석은 무언가를 여기에서 놓칠지도 모른다. 그리고 더 신선한 눈은 필요하다. 미리 감사드립니다!

답변

3

특정 문제가 무엇인지 모르지만 "interface_date"가 DATE 유형이라고 가정하면 날짜에 대한 쿼리에서 리터럴을 사용하는 것은 바람직하지 않습니다. 이것은 기본 NLS_DATE_FORMAT가 날짜 리터럴과 일치한다는 가정을합니다. 그것은 당신을 물기 위하여 돌아올 것이다. 날짜 제약 조건을 이식 할 수있게하려면 다음으로 변경하십시오.

AND interface_date = to_date('2013-06-30','YYYY-MM-DD') 
+0

답장을 보내 주셔서 감사합니다. 나는 더 깊이 조사했고 이것이 일어나고있는 이유를 알아 냈다. 첫 번째 쿼리에는 결과 집합이없는 반면 두 번째 쿼리에는 첫 번째 쿼리에서 오류가 발생하지 않는 이유가 있습니다. SQL 구현에 대해 좋은 연습을 해 주셔서 감사합니다! :) – Oneb

+0

안녕하세요 당신 to_date()의 두 번째 매개 변수에 대해 제공 할 수있는 날짜 형식 목록이 있습니까? 감사. :) – Oneb

+1

다음은 오라클 포맷 옵션입니다. http://docs.oracle.com/cd/B19306_01/server.102/b14200/sql_elements004.htm – OldProgrammer

관련 문제