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;
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.
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.
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.
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));
, 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);
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);
java.util.Date date = new Date();
Object param = new java.sql.Timestamp(date.getTime());
preparedStatement.setObject(param);
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'),?,?,?,?,?)");
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é.
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.
ç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()));