2016-06-14 3 views
0

У меня есть следующий запрос, который дает неверное числовое исключение. Если я просто заменю дату (06/10/2016 11:53:46 AM) с помощью sysdate, она работает fine.please, дайте мне знать, где я в этом не ошибаюсь.Ошибка NUMBER в блоке PLSQL

DECLARE 
count NUMBER; 
BEGIN 
SELECT COUNT(*) INTO count FROM TABLE_NAME WHERE ID =123 
AND TO_CHAR('06/10/2016 11:53:46 AM','HH24:MI') > REJECTTIME; 
DBMS_OUTPUT.PUT_LINE(count); 
END; 
+0

Что это за блок * предположительно *? – Mureinik

ответ

1

Вы в замешательстве. sysdate - это значение даты/времени, а не строка. Если вы хотите, эквивалентный код, а затем использовать:

TO_CHAR(TO_DATE('06/10/2016 11:53:46 AM','MM/DD/YYYY HH:MI:SS AM'), 'HH24:MI') > REJECTTIME 

То есть, преобразовать значение даты, а затем в строку для сравнения.

Вы получаете сообщение об ошибке, потому что ваша строка не соответствует формату 'HH24:MI'.

+0

Спасибо за указание :) – Karthik

1

Вы пытаетесь преобразовать формат AM PM в формат 24 часа? Если это то, чего вы хотите, вы можете попробовать это.

SELECT COUNT(*) INTO count FROM TABLE_NAME WHERE ID =123 and 
to_char(to_date('06/10/2016 11:53:46 AM','MM/DD/YYYY HH:MI:SS AM'),'HH24:MI') > REJECTTIME 
+0

Большое спасибо :) – Karthik

Смежные вопросы