ORA-01858: нечисловой символ был найден там, где ожидалось числовое значение

#oracle #jsp

#Oracle #jsp

Вопрос:

Вот мой запрос,

 select count(*) from " table1 " where 
  latitude = '" selectedlat "' and       
  longitude = '" selectedlong "' and 
  observation_date between  TO_DATE('" selectedobstime "','mm/dd/yyyy hh24:mi:ss') AND 
  TO_DATE('" selectedobstime "','mm/dd/yyyy hh24:mi:ss')
  

Когда я выполняю этот запрос на странице jsp, его отображение нечислового символа было найдено там, где ожидалось числовое значение.

Комментарии:

1. Для чего это фактическое значение selectedobstime ? Что бы это ни было, оно, похоже, не соответствует указанному вами формату. И почему вы ищете между двумя копиями одного и того же значения?

2. каковы ваши значения для переменных?

3. И каков тип данных latitude и logitute

4. типы данных широты и долготы являются числовыми

5. тип данных latitude и logitute — это число

Ответ №1:

Если ваше фактическое значение для selectedobstime равно, как вы, кажется, предлагаете в комментарии, '2001-08-20 AM 11:43:00' то это не в формате mm/dd/yyyy hh24:mi:ss .

Вам нужно будет использовать модель формата, например:

 TO_DATE('" selectedobstime "','yyyy-mm-dd AM hh:mi:ss')
  

Необходим индикатор AM / PM, и для часовой части вам нужен 12-часовой, HH а не 24-часовой HH24 . Подробнее об элементах формата даты / времени.

Комментарии:

1. @Sony — Я не смогу вам помочь, если вы не сообщите нам, каково ваше фактическое значение, полученное из JSP. Кто-то вводит значение? Если да, то что именно они вводят?

2. @Sony — этот сайт работает не так. Для вопроса требуется соответствующая информация. Важная вещь, которую вы не показали, — это фактическое строковое значение .

3. Нам нужно фактическое значение selectedobstime строки. Вы пытаетесь преобразовать это в дату, чтобы соответствовать столбцу таблицы. Это нормально. Но маска формата, которую вы используете, to_date() должна соответствовать фактическому строковому значению, которое вы пытаетесь преобразовать.

4. 2001-08-20 AM 11:43:00