IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JDBC Java Discussion :

setDate d'un PreparedStatement au jour précédent


Sujet :

JDBC Java

  1. #1
    Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2019
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2019
    Messages : 2
    Points : 2
    Points
    2
    Par défaut setDate d'un PreparedStatement au jour précédent
    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 :
    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;
    	}
    Et voilà la sortie console :

    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.

  2. #2
    Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2019
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2019
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    J'ai trouvé une solution à mon problème en utilisant plutôt la méthode preparedStmt.setDate(1, todaySQLDate, java.util.Calendar.getInstance());
    Je récupère bien les bonnes dates désormais :

    Date : 2019-03-01
    LocalDate : 2019-03-01
    SQLDate : 2019-03-01
    PreparedStatement : com.mysql.cj.jdbc.ClientPreparedStatement: SELECT * FROM Annuaire WHERE Date = '2019-03-01' AND LocalDate = '2019-03-01';

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Récupérer la date du jour précédent
    Par Invité dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 11/03/2014, 22h00
  2. Trouver le jour précédent
    Par trobin dans le forum C
    Réponses: 4
    Dernier message: 06/03/2012, 11h00
  3. Trouver la date du jour précédent
    Par yoaugoulo dans le forum Développement de jobs
    Réponses: 4
    Dernier message: 07/01/2010, 12h15
  4. PreparedStatements et mise à jour BDD
    Par florentB dans le forum JDBC
    Réponses: 2
    Dernier message: 17/01/2007, 14h30
  5. [Calendar] Problème de jour précédent
    Par Amara dans le forum Collection et Stream
    Réponses: 12
    Dernier message: 03/07/2006, 10h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo