Comment conserver Java Date pour Mysql datetime...?

est-ce que n'importe qui peut me dire comment je peux stocker la date Java pour Mysql datetime...?

quand j'essaie de le faire...seule la date est stockée et l'heure restent 00:00:00 dans les magasins de datation Mysql comme celui-ci...

2009-09-22 00:00:00

je veux non seulement la date mais aussi l'heure...comme

2009-09-22 08:08:11

j'utilise JPA(Hibernate) avec spring mydomain classes utilise java.util.Date mais j'ai créé des tables en utilisant des requêtes manuscrites...

ceci est mon instruction create

CREATE TABLE ContactUs (id BIGINT auto_increment, 
                        userName VARCHAR(30), 
                        email VARCHAR(50), 
                        subject VARCHAR(100), 
                        message VARCHAR(1024), 
                        messageType VARCHAR(15), 
                        contactUsTime datetime, 
                        primary key(id))
                        TYPE=InnoDB;
90
demandé sur Haim Evgi 2010-03-08 14:37:12

11 réponses

voir dans le lien :

http://www.coderanch.com/t/304851/JDBC/java/Java-date-MySQL-date-conversion

le code suivant vient de résoudre le problème:

java.util.Date dt = new java.util.Date();

java.text.SimpleDateFormat sdf = 
     new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

String currentTime = sdf.format(dt);

Ce " currentTime " a été insérée dans la colonne dont le type était DateTime et il a réussi.

147
répondu Haim Evgi 2011-11-19 22:33:38

annoter votre champ (ou getter) avec @Temporal(TemporalType.TIMESTAMP) , comme ceci:

public class MyEntity {
    ...
    @Temporal(TemporalType.TIMESTAMP)
    private java.util.Date myDate;
    ...
}

ça devrait faire l'affaire.

79
répondu Pascal Thivent 2010-03-09 16:43:21

utilisez-vous java.sql.Date ? Bien que cela ait une granularité milliseconde comme classe Java (c'est une sous-classe de java.util.Date , mauvaise décision de conception), il sera interprété par le pilote JDBC comme une date sans composante temporelle. Vous devez utiliser java.sql.Timestamp à la place.

35
répondu Michael Borgwardt 2010-03-09 16:38:01

probablement parce que votre date java a un format différent de mysql format ( YYYY-MM-DD HH:MM:SS )

faire

 DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
 Date date = new Date();
 System.out.println(dateFormat.format(date));
7
répondu Marcx 2010-03-08 11:43:44

, vous aurez le 2011-07-18 + format de l'heure

long timeNow = Calendar.getInstance().getTimeInMillis();
java.sql.Timestamp ts = new java.sql.Timestamp(timeNow);
...
preparedStatement.setTimestamp(TIME_COL_INDEX, ts);
5
répondu Anuj 2011-11-19 22:24:38

datetime de mysql -> GregorianCalendar

SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = format.parse("2012-12-13 14:54:30"); // mysql datetime format
GregorianCalendar calendar = new GregorianCalendar();
calendar.setTime(date);
System.out.println(calendar.getTime());

GregorianCalendar - > mysql datetime

SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String string = format.format(calendar.getTime());
System.out.println(string);
5
répondu Nikopol 2012-12-25 13:18:45
java.util.Date date = new Date();
Object param = new java.sql.Timestamp(date.getTime());    
preparedStatement.setObject(param);
2
répondu michdraft 2013-06-11 08:48:20

utilisez le code suivant pour insérer la date dans MySQL. Au lieu de changer le format de notre date pour répondre aux exigences de MySql, nous pouvons aider la base de données à reconnaître notre date en définissant les paramètres STR_TO_DATE(?, '%l:%i %p') .

par exemple, 2014-03-12 peut être représenté comme STR_TO_DATE('2014-03-12', '%Y-%m-%d')

preparedStatement = connect.prepareStatement("INSERT INTO test.msft VALUES (default, STR_TO_DATE( ?, '%m/%d/%Y'), STR_TO_DATE(?, '%l:%i %p'),?,?,?,?,?)"); 
1
répondu Yang_2333 2014-03-12 05:08:31

en fait, vous ne pouvez pas utiliser SimpleDateFormat, vous pouvez utiliser quelque chose comme cela;

  @JsonSerialize(using=JsonDateSerializer.class)
  @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "dd/MM/yyyy HH:mm:ss")
  private Date blkDate;

de Cette façon, vous pouvez obtenir directement la date avec le format spécifié.

0
répondu Sahin Yanlık 2016-12-20 03:57:31

ses conditions très simples dans cette réponse sont dans mysql le type de données de la colonne est datetime et vous voulez envoyer des données du code java à mysql:

de java.util.Date dt = nouveau java.util.Date();

whatever your code object may be .setDateTime (dt);

chose importante est juste de choisir la date et son format est déjà selon le format mysql et de l'Envoyer, pas plus les modifications nécessaires.

0
répondu Yash Agrawal 2017-05-15 18:29:09

ça me va !!

dans la table mysql

DATETIME

dans l'entité:

private Date startDate;

en cours:

objectEntity.setStartDate(new Date());

dans l'état préparé:

pstm.setDate(9, new java.sql.Date(objEntity.getStartDate().getTime()));
-2
répondu Miguel Alonso Mosquera Aguilar 2014-11-20 17:54:34