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;
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.
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.
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.
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));
_
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);
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);
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 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'),?,?,?,?,?)");
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.
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())
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é.