2009-09-07 31 views
22

Khi tôi cố gắng thực hiện đoạn mã này:ORA-01.861: đen không phù hợp với định dạng chuỗi

cmd.CommandText = "SELECT alarm_id,definition_description,element_id, 
    TO_CHAR (alarm_datetime, 'YYYY-MM-DD HH24:MI:SS'),severity, 
    problem_text,status FROM aircom.alarms 
    WHERE status = 1 and 
    TO_DATE (alarm_datetime,'DD.MM.YYYY HH24:MI:SS') > TO_DATE ('07.09.2008 
    09:43:00', 'DD.MM.YYYY HH24:MI:SS') 
    order 
    by ALARM_DATETIME desc"; 

tôi nhận được:

ORA-01861: literal does not match format string 

Không có vấn đề với kết nối cơ sở dữ liệu bởi vì tôi có thể thực hiện cơ bản Các lệnh SQL.

Sự cố với tuyên bố này là gì?

+0

Thử chạy câu lệnh này bằng cách sử dụng SQL Plus để xem những gì nó có thể nói về điều này. Nếu SQLPlus có thể thực hiện nó, ado.net sẽ không có bất kỳ vấn đề gì. – shahkalpesh

Trả lời

25

Tháo TO_DATE trong mệnh đề WHERE

TO_DATE (alarm_datetime,'DD.MM.YYYY HH24:MI:SS') 

và thay đổi mã để

alarm_datetime 

Lỗi xuất phát từ chuyển đổi to_date của một cột ngày.

Đã thêm giải thích: Oracle chuyển đổi alarm_datetime của bạn thành chuỗi bằng định dạng ngày nls phụ thuộc của nó. Sau đó, nó gọi to_date với mặt nạ ngày được cung cấp của bạn. Điều này ném ngoại lệ.

7

Lỗi có nghĩa là bạn đã cố nhập một chữ bằng chuỗi định dạng, nhưng độ dài của chuỗi định dạng không có độ dài bằng chữ.

Một trong những định dạng không đúng:

TO_CHAR(t.alarm_datetime, 'YYYY-MM-DD HH24:MI:SS') 
TO_DATE(alarm_datetime, 'DD.MM.YYYY HH24:MI:SS') 
+1

Cách sử dụng nào là câu trả lời khi bạn đưa ra một ví dụ và nói rằng một nửa số đó là không chính xác? – PunchyRascal

0
SELECT alarm_id 
,definition_description 
,element_id 
,TO_CHAR (alarm_datetime, 'YYYY-MM-DD HH24:MI:SS') 
,severity 
, problem_text 
,status 
FROM aircom.alarms 
WHERE status = 1 
    AND TO_char (alarm_datetime,'DD.MM.YYYY HH24:MI:SS') > TO_DATE ('07.09.2008 09:43:00', 'DD.MM.YYYY HH24:MI:SS') 
ORDER BY ALARM_DATETIME DESC 
0

Ngay trước khi thực hiện truy vấn: ALTER phiên set NLS_DATE_FORMAT = "DD.MM.YYYY HH24: MI: SS"; hoặc bất kể định dạng nào bạn cung cấp thông tin cho hàm ngày tháng. Điều này sẽ khắc phục lỗi ORA

+0

Mã không bao giờ nên phụ thuộc vào NLS_DATE_FORMAT. Tham số đó hữu ích cho việc định cấu hình cách hiển thị dữ liệu nhưng không được sử dụng để xử lý. –

Các vấn đề liên quan