2013-02-27 48 views
0

美好的一天。ORA-01861文字與SELECT語句上的格式字符串不匹配

我執行查詢並遭遇:

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'); 

我的其他查詢寫在哪個DID NOT WORK下面。

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 2013-02-27 02:59:24

+0

嗨,你有我可以提供to_date()的第二個參數的日期格式列表?謝謝。 :) – Oneb 2013-02-27 03:21:05

+1

以下是所有oracle格式化選項 - http://docs.oracle.com/cd/B19306_01/server.102/b14200/sql_elements004.htm – OldProgrammer 2013-02-27 03:27:06