2010-04-03 2 views
3

Мне нужно получить фильм из базы данных PostgreSQL, которая соответствует заданному названию и дате выпуска. title - символ (75) и releaseDate - это дата. У меня есть этот код:Проблемы с датой, подготовленными, JDBC и PostgreSQL

String query = "SELECT * FROM \"Movie\" WHERE title = ? AND \"releaseDate\" = ?)"; 
Connection conn = connectionManager.getConnection(); 
PreparedStatement stmt = conn.prepareStatement(query); 
java.sql.Date date = new java.sql.Date(releaseDate.getTime()); 
stmt.setString(1, title); 
stmt.setDate(2, date); 
ResultSet result = stmt.executeQuery(); 

но он не работает, потому что releaseDate не подходит, если это необходимо. Запрос SELECT * FROM "Movie" WHERE title = A_MOVIE AND "releaseDate" = A_DATE отлично работает в командной оболочке с помощью Psql

+0

Если 'releaseDate' является' java.sql.Date', почему скопировать его в 'date' перед вызовом' SETDATE() '? – trashgod

+0

не java.sql.Date is java.util.Date – GuidoMB

+1

Какой именно тип столбца SQL 'releaseDate'? Действительно ли это «дата»? Существует также временная метка. Какую версию PostgreSQL DB и версию драйвера JDBC вы используете? – BalusC

ответ

3

Проблема была в базе данных из-за формат времени был изменен с ДД/ММ/ГГГГ ММ/ДД/ГГГГ.

Благодаря

+0

Aha! http://www.postgresql.org/docs/current/static/datatype-datetime.html#DATATYPE-DATETIME-INPUT – trashgod