2014-12-26 3 views
0

Я хочу выбрать несколько дат. И из приложения я передаю строковое значение, которое содержит несколько дат, как я могу преобразовать всю эту строку в даты с помощью to_date или есть ли какие-либо другие путь? я не в состоянии выполнить сильфон запросакак передать несколько DATES TO_DATE в sql

select * from emp 
where start_date in 
    TO_DATE('11-Jan-15 20:30:00', '11-Jan-15 08:00:00', '11-Jan-15 20:00:00') 

и я попробовал сильфон один также

where STRT_TIME IN 
    TO_DATE('11-Jan-15 20:30:00', '11-Jan-15 08:00:00', '11-Jan-15 20:00:00', 
     'DD-MON-RR HH24:MI:SS') 

ни одна из вещей не работают, но если я удалить TO_DATE он работает отлично в базе данных, но из приложения iam получает ошибку?

Может ли кто-нибудь мне помочь?

+1

и ошибка приложения есть? И ваш двигатель БД? –

+0

error is java.sql.SQLDataException: ORA-01830: конец формата даты заканчивается перед преобразованием всей входной строки, и я уверен, что это происходит из-за того, что я передаю строку из приложения в DB.before execute Мне нужно преобразовать целые строки в date при выполнении вышеуказанных запросов я получаю проблему –

ответ

1

Вы должны сделать IN список дат ... так много звонков в TO_DATE:

where STRT_TIME IN (TO_DATE('11-Jan-15 20:30:00','DD-MON-RR HH24:MI:SS'),TO_DATE('11-Jan-15 08:00:00','DD-MON-RR HH24:MI:SS'),TO_DATE('11-Jan-15 20:00:00','DD-MON-RR HH24:MI:SS')) 

Вы можете сделать наоборот: то есть сделать TO_CHAR(STRT_TIME, 'DD-MON-RR HH24:MI:SS') и сравнить, что в IN список строк - но это не имеет большого значения на больших наборах данных.

0

Вместо конвертирования literats символов в даты с to_date вы могли бы попытаться превратить вашу дату в символьный литерал с to_char:

select * from emp 
    where 
    to_char(start_date, 'DD-MON-RR HH24:MI:SS') 
    in 
    ('11-Jan-15 20:30:00', '11-Jan-15 08:00:00', '11-Jan-15 20:00:00') 
Смежные вопросы