2010-09-09 8 views
23

J'essaie de définir un horodatage dans ma base de données en utilisant java, mais dans ma table tout ce que je reçois est la date, et pas de temps (c'est-à-dire, ressemble à "2010-09-09 00:00:00"). J'utilise un champ datetime sur ma base de données mysql (car appearsdatetime is more common than timestamp). Mon code pour définir la date ressemble à ceci:Comment définir une date et heure SQL complète en utilisant java, et pas seulement la date?

PreparedStatement ps = conn.prepareStatement("INSERT INTO mytable (datetime_field) VALUES (?)") 
java.util.Date today = new java.util.Date(); 
java.sql.Date timestamp = new java.sql.Date(today.getTime()); 
ps.setDate(1, timestamp); 
ps.executeUpdate(); 

Comment régler la date pour inclure l'heure?

Modifier: J'ai changé le code comme ci-dessous, et il définit à la fois la date et l'heure.

PreparedStatement ps = conn.prepareStatement("INSERT INTO mytable (datetime_field) VALUES (?)") 
java.util.Date today = new java.util.Date(); 
java.sql.Timestamp timestamp = new java.sql.Timestamp(today.getTime()); 
ps.setTimestamp(1, timestamp); 
ps.executeUpdate(); 

Répondre

28

Utilisez java.sql.Timestamp et setTimestamp(int, Timestamp). java.sql.Date est date uniquement, quel que soit le type de la colonne il est stocké dans.

4

pas exactement ce que vous devez utiliser, mais

ps.setDate(); 

attend un type de colonne Date. Donc, c'est normaliser, en supprimant le temps.

Essayez

ps.setTimetamp(); 
-3

Vous pouvez utiliser:

private static String getTimeStamp() { 
    SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
    return f.format(new Date()); 
} 
+2

Vous ne devriez pas traiter avec les formats de chaîne pour les dates/heures en leur permettant d'économiser ou de les lire à partir d'une base de données. Les abstractions de JDBC telles que 'setTimestamp' et' getTimestamp' sont là pour rendre cela inutile. – ColinD

+0

thx, j'ai mal lu et n'ai pas remarqué sql. Mon erreur – oyo