web-dev-qa-db-fra.com

Comment stocker Java Date à Mysql datetime ...?

Est-ce que n'importe quel corps peut me dire comment puis-je stocker Java Date à Mysql datetime ...?

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

2009-09-22 00:00:00

Je veux non seulement la date mais aussi le temps ... comme

2009-09-22 08:08:11

J'utilise JPA (Hibernate) avec les classes de printemps mydomain qui utilisent Java.util.Date, mais j'ai créé des tables à l'aide de requêtes manuscrites ...

c'est ma déclaration de création

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;
94
Urvish

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é dans la colonne de type DateTime et a abouti.

155
Haim Evgi

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

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

Cela devrait faire l'affaire.

87
Pascal Thivent

Utilisez-vous peut-être Java.sql.Date? Bien que la granularité en millisecondes corresponde à une classe Java (il s'agit d'une sous-classe de Java.util.Date, mauvaise décision de conception), elle sera interprétée par le pilote JDBC comme une date sans composant horaire. Vous devez utiliser Java.sql.Timestamp à la place.

37

Probablement parce que votre date Java a un format différent de mysql format (_YYYY-MM-DD HH:MM:SS_)

fais ça

_ DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
 Date date = new Date();
 System.out.println(dateFormat.format(date));
_
7
Marcx

vous obtiendrez le format 2011-07-18 + heure

long timeNow = Calendar.getInstance().getTimeInMillis();
Java.sql.Timestamp ts = new Java.sql.Timestamp(timeNow);
...
preparedStatement.setTimestamp(TIME_COL_INDEX, ts);
5
Anuj

mysql datetime -> 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
Nikopol
Java.util.Date date = new Date();
Object param = new Java.sql.Timestamp(date.getTime());    
preparedStatement.setObject(param);
4
michdraft

Utilisez le code suivant pour insérer la date dans MySQL. Au lieu de modifier 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é par 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
Yang_2333

C'est très simple, bien que les conditions dans cette réponse soient dans mysql le le type de données de la colonne est datetime et que vous voulez envoyer des données de Java code à mysql:

Java.util.Date dt = new Java.util.Date ();
whatever your code object may be. SetDateTime (dt);

ce qui est important, c’est de choisir la date et son format correspond déjà au format mysql et de l’envoyer, aucune autre modification n’est requise.

0
Yash Agrawal

Je préfère toujours la méthode en une ligne

new Java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(Calendar.getInstance().getTime())
0
Mohannd

En fait, vous ne pouvez pas utiliser SimpleDateFormat, vous pouvez utiliser quelque chose comme ceci;

  @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 directement obtenir la date avec le format spécifié.

0
Sahin Yanlık