2011-05-15 56 views
3

我在java中有一個日期格式,我需要在MySQL中保存爲時間格式。有沒有辦法從日期獲得時間部分?我知道Dat.gettime()返回一個長,但我只需要在MySQLJava日期 - >到MySql時間

任何建議...

THX所有的時間..

+0

http://stackoverflow.com/q/2400955/248903 – Ascherer 2011-05-15 11:28:14

回答

3

一起使用PreparedStatement與您java.util.Date創建java.sql.Time對象應該工作:

java.util.Date myDate = .... 
java.sql.Time theTime = new java.sql.Time(myDate.getTime()); 
PreparedStatement pstmt = ... 
pstmt.setTime(1, theTime); 
+0

正確的答案,但需要注意幾個問題:(A)這將產生一個時間的日在[UTC](https://開頭的連接。 wikipedia.org/wiki/Coordinated_Universal_Time)而不是[特定時區](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones),這可能是也可能不是你想要的。 (B)['java.sql.Time'](http://docs.oracle.com/javase/8/docs/api/java/sql/Time.html)類現在是遺留的,代之以['' java.time.LocalTime'](https://docs.oracle.com/javase/8/docs/api/java/time/LocalTime.html)自[JDBC 4.2]開始的類(https://jcp.org/ aboutJava/communityprocess/mrel/jsr221/index2.html)和更高版本。 – 2017-09-02 19:06:33

0

使用java.sql.Date建設SQL日期。

long d = date.getTime(); 
java.sql.Date sqlDate = new java.sql.Date(d); 
0

你可以使用的SimpleDateFormat格式化您的日期時間字段:

SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss"); 
String time = sdf.format ( yourDate ); 
0

根據在JDBC驅動程序上,它可以省略日期的時間部分,最好使用java.sql.Timestamp。

java.sql.Timestamp mysqlDate = new java.sql.Timestamp(javaDate.getTime()); 
0

獲取日期+ Mysql的時間

ResultSet rs=....; 

Date tg = new Date(rs.getTimestamp("column datetime").getTime()); 
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy hh:mm aaa"); 

String val = sdf.format(tg); 
0

當與數據庫進行數據交換,使用適當的日期類型和對象。不要使用單純的字符串或整數而不是合法的類型/類。

java.time

現代的方法使用java.time類。使用符合JDBC 4.2或更高版本的JDBC driver,您可以省略使用java.sql.Time類,並直接使用java.time.LocalTime

傳統類java.util.Date表示UTC中的日期和時間。轉換爲現代java.time類(Instant),指定要查看該值的時區,並提取時間。

要轉換,請調用添加到舊舊類的新方法。

Instant instant = myJavaUtilDate.toInstant() ; 

指定時區。

該時區爲至關重要。對於任何特定的時刻,日期因地區而異。例如,Paris France午夜後幾分鐘是新的一天,而在Montréal Québec仍然是「昨天」。

continent/region的格式指定一個proper time zone name,如America/MontrealAfrica/Casablanca,或Pacific/Auckland。切勿使用3-4字母縮寫,如ESTIST,因爲它們是而不是真正的時區,不是標準化的,甚至不是唯一的(!)。

ZoneId z = ZoneId.of("America/Montreal") ; // Or "Asia/Kolkata", or "Pacific/Auckland", etc. 
ZonedDateTime zdt = instant.atZone(z) ; 

提取沒有日期的時間。

LocalTime lt = zdt.toLocalTime() ; 

傳遞到您的PreparedStatement致電setObject

String sql = "INSERT INTO tbl_ (time_of_day_) VALUES (?) ; " ; 
PreparedStatement ps = conn.prepareStatement(sql) ; 
ps.setObject(1 , lt) ; // Call `setObject` to pass a java.time object directly without converting into `java.sql.*` type. 
int rows = ps.executeUpdate() ; 

以類似的方式獲取數據,調用ResultSet::getObject

LocalTime lt = myResultSet.getObject(… , LocalTime.class) ;