2010-09-09 9 views
23

Veritabanımdaki java'yı kullanarak bir zaman damgası oluşturmaya çalışıyorum, ancak benim masamda alabildiğim tüm tarih ve zaman yok (yani, "2010-09-09 00:00:00" gibi görünüyor).Sadece tarihi değil, java'yı kullanarak tam tarih ve saat sql nasıl ayarlayabilirim?

Mysql veritabanımda bir datetime alanı kullanıyorum (çünkü appears bu datetime is more common than timestamp). Tarihi ayarlamak için kodum şunun gibi görünüyor:

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(); 

Tarihi dahil etmek için tarihi nasıl ayarlayabilirim?

Düzenleme: Aşağıdaki şekilde kodu değiştirdim ve hem tarih hem de saati ayarlar.

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(); 

cevap

28

java.sql.Timestamp ve setTimestamp(int, Timestamp) kullanın. java.sql.Date bakılmaksızın sütununun türü o saklanan ediliyor, tarih salt yazılır.

4
kullanmak için gerekenleri tam olarak emin

değil, ama

ps.setDate(); 

tarihi bir sütun türünü bekliyor. Bu yüzden normalleştiriyor, zamanı kaldırıyor.

Şunları kullanabilirsiniz

ps.setTimetamp(); 
-3

deneyin:

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

Sen tarihleri ​​/ kere dize formatları ile uğraşmak olmamalıdır kaydettikten veya bir veritabanından onları okurken. JDBC'nin setTimestamp' ve 'getTimestamp' gibi soyutlamaları gereksiz yapmak için var. – ColinD

+0

thx, Yanlış okumuş ve sql fark etmedim. Benim hatam – oyo