Bonjour à tous,
Je rencontre un problème avec mon PreparedStatement qui cherche à sélectionner toutes mes lignes selon plusieurs dates comme critère. Je n'ai pas de problème pour le setDate() mais lorsque je fais un preparedStatement.toString() il me retourne mes dates avec un jour de moins. Lorsque j'utilise une util.Date que je transforme en sql.Date je n'ai pas ce problème, mais je dois utiliser des LocalDate et c'est là que je rencontre ce problème. Voici mon code :
Et voilà la sortie console :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32 private static Connection conn = null; public static boolean querry() { PreparedStatement preparedStmt = null; String sql = "SELECT * FROM Annuaire WHERE Date = ? AND LocalDate = ?"; if(!isConnected()) return false; try { java.util.Date todayDate = new java.util.Date(); java.sql.Date todaySQLDate = new java.sql.Date(todayDate.getTime()); System.out.println("Date : " + todaySQLDate); LocalDate todayLocalDate = LocalDate.now(); System.out.println("LocalDate : " + todayLocalDate); java.sql.Date todayLocalSQLDate = java.sql.Date.valueOf(todayLocalDate); System.out.println("SQLDate : " + todayLocalSQLDate); preparedStmt = conn.prepareStatement(sql); preparedStmt.setDate(1, todaySQLDate); preparedStmt.setDate(2, todayLocalSQLDate); System.out.println("PreparedStatement : " + preparedStmt.toString()); preparedStmt.execute(); }catch(SQLException e){ e.printStackTrace(); return false; } return true; }
Date : 2019-02-28
LocalDate : 2019-02-28
SQLDate : 2019-02-28
PreparedStatement : com.mysql.cj.jdbc.ClientPreparedStatement: SELECT * FROM Annuaire WHERE Date = '2019-02-28' AND LocalDate = '2019-02-27';
Pour la Date je n'ai pas de problème mais pour la LocalDate elle est au jour précédent dans le preparedStatement, et donc je ne récupère pas ce que je veux dans ma base de donnée MySQL.
Est-ce que quelqu'un voit d'où l'erreur pourrait venir?
Merci à vous.
Partager