Проблемы с Date, PreparedStatement, JDBC и PostgreSQL

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

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.


person GuidoMB    schedule 03.04.2010    source источник
comment
Если releaseDate является java.sql.Date, зачем копировать его в date перед вызовом setDate()?   -  person trashgod    schedule 03.04.2010
comment
это не java.sql.Date это java.util.Date   -  person GuidoMB    schedule 03.04.2010
comment
Каков точный тип столбца SQL releaseDate? Это действительно date? Есть еще timestamp. Какую версию базы данных PostgreSQL и версию драйвера JDBC вы используете?   -  person BalusC    schedule 03.04.2010


Ответы (1)


Проблема была в базе данных, потому что формат времени был изменен с дд/мм/гггг на мм/дд/гггг.

Спасибо

person GuidoMB    schedule 03.04.2010
comment
Ага! postgresql.org/docs/current/static/ - person trashgod; 03.04.2010