ORA-01861: literal does not match format string
Bir tarih metni biçim maskesine, maske vermediyseniz oturumun varsayılan tarih biçimine uymuyor. Metni maskeyle karakter karakter karşılaştırın ya da DATE '2026-10-15' kullanın.
ORA-01861 ne demek?
Oracle metni ve maskeyi yan yana okur. Ayraçlar ya da sıra uymazsa ORA-01861 ile durur. Çoğu zaman ortada hiç TO_DATE yokken de görülür: DATE kolonunu düz bir metinle karşılaştırmak Oracle’ın NLS_DATE_FORMAT’ı kullanmasına yol açar; bu da DD-MON-RR olabilir.
ORA-01861 neden olur?
- Metne uymayan bir maske:
2026-10-15içinDD/MM/YYYYgibi. - DATE’i metinle karşılaştırmak:
WHERE order_date > '2026-10-15'. - Tarih tutan bir metin kolonunda karışık biçimler.
NLS_DATE_FORMAT’ı farklı bir istemci ya da oturum.
ORA-01861 nasıl çözülür?
- Maskeyi metne tam olarak uydurun.
- DATE’i asla çıplak metinle karşılaştırmayın: maskeli
TO_DATEya daDATEdeğeri kullanın. - Oturumun biçimine bakın:
SELECT value FROM nls_session_parameters WHERE parameter = 'NLS_DATE_FORMAT'. - Karışık veride hatalı satırları
VALIDATE_CONVERSIONile bulun (Oracle 12.2 ve sonrası).
ORA-01861 örneği
Maske metne uymalı:
-- ORA-01861: literal does not match format string
SELECT TO_DATE('2026-10-15', 'DD/MM/YYYY') FROM dual;
-- Çalışır
SELECT TO_DATE('2026-10-15', 'YYYY-MM-DD') FROM dual;
Çıplak metin oturum biçimini kullanır:
-- NLS_DATE_FORMAT DD-MON-RR ise ORA-01861
SELECT * FROM orders WHERE order_date > '2026-10-15';
-- Her yerde çalışır
SELECT * FROM orders WHERE order_date > DATE '2026-10-15';
SQLlightspeed’de
Bir ifade hata verdiğinde SQLlightspeed’in hata paneli, hata kodunu sade bir Türkçe açıklama ve ne yapmanız gerektiğine dair bir öneriyle; Oracle’ın kendi mesajı ve Oracle dokümantasyonuna bağlantıyla birlikte gösterir — bu hata ve sık görülen onlarca başka hata için.
İlgili hatalar
ORA-01843ORA-00932ORA-01722 Tüm Oracle hataları →
Oracle dokümantasyonu: ORA-01861. Oracle, Oracle Corporation’ın tescilli ticari markasıdır. SQLlightspeed’in Oracle ile bir bağlantısı yoktur.