2010-04-03 8 views
3

Je dois obtenir un film à partir d'une base de données PostgreSQL qui correspond à un titre et une date de publication donnés. title est un caractère (75) et releaseDate est une date. Je possède ce code:Problèmes avec Date, preparedStatement, JDBC et 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(); 

mais cela ne fonctionne pas parce que le ReleaseDate ne correspond pas à quand il faut. La requête SELECT * FROM "Movie" WHERE title = A_MOVIE AND "releaseDate" = A_DATE fonctionne parfaitement sur une coquille de commande en utilisant psql

+0

Si 'releaseDate' est un' java.sql.Date', pourquoi copier à '' date' avant d'appeler setDate() '? – trashgod

+0

n'est pas java.sql.Date est java.util.Date – GuidoMB

+1

Quel est le type exact de colonne SQL de 'releaseDate'? Est-ce vraiment «date»? Il y a aussi 'timestamp'. Quelle version de DB PostgreSQL et quelle version du pilote JDBC utilisez-vous? – BalusC

Répondre

3

Le problème était dans la base de données en raison du format de l'heure a été changé de dd/MM/AAAA à JJ/MM/AAAA.

Merci

+0

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

Questions connexes