Je souhaite que quelqu'un m'aider, je veux insérer dans ma BD(Mysql) une date , sachant que je travaille application jee (JSP et servlet),
que doit être le type de la date dans ma BD et aussi dans mon formulaire?
Je vous remercie d'avance.

3 réponses


Avec JDBC tu as au moins quatre solutions pour insérer une date à partir d'une java.util.Date

                String sql = "INSERT INTO personne (AGE, NOM, DATENAIS) VALUES (?, ? , ?)";  // pas besoin de mettre d'apostrophes autour des paramètres
                // on prépare la requête
                PreparedStatement stmt = conn.prepareStatement(sql);

                // on lui passe des arguments
                int age = 10;
                String nom = "solution avec getTime";
                java.util.Date noel = new java.util.Date();

                //== premiere solution SQLDate========================================
                stmt.setInt(1, age);  // le premier argument commence à 1
                stmt.setString(2, nom);
                stmt.setDate(3, new java.sql.Date(noel.getTime()));  // n'insert pas le temps !!!!

                stmt.execute();         
                //== deuxieme solution SimpleDateFormat========================================
                stmt.setInt(1, age);  // le premier argument commence à 1
                stmt.setString(2, "Solution avec format iso");
                SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                String strDate = fmt.format(noel);
                stmt.setString(3, strDate);  // passage de l'argument String pour la date 

                stmt.execute();
                //==troisieme solution Timestamp========================================                
                stmt.setInt(1, age);  // le premier argument commence à 1
                stmt.setString(2, "Solution avec timestamp");
                stmt.setTimestamp(3, new java.sql.Timestamp(noel.getTime()));  // ok date + time

                stmt.execute();

                //== quatrième solution avec LocalDateTime (java8)
                stmt.setInt(1, age);  // le premier argument commence à 1
                stmt.setString(2, "Solution LocalDateTime avec timestamp");
                LocalDateTime lc = LocalDateTime.now();
                stmt.setTimestamp(3, Timestamp.valueOf(lc));  // ok date + time

                stmt.execute();

Pour lire une java.sql.Date depuis un recordset :

                String sql = "SELECT age, nom, datnaissance FROM personne";  

                Statement stmt = conn.createStatement();
                ResultSet rs = stmt.executeQuery(sql);
                // on utilise un formatage
                SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                while (rs.next()) {
                    System.out.println("age = " + rs.getInt("age")  + " naissance = " + fmt.format(rs.getTimestamp("datnaissance")));
                }
        // sinon pour passer de java.sql.Date à java.util.Date
        java.util.Date newDate = rs.getTimestamp("datnaissance");

Pour réponde à ta question, si tu veux la date et l'heure il faut utiliser le type DATETIME