需要將時間插入到mysql中,其中mysql對應的欄位屬性為Date,java代碼如下:
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
try {
java.sql.Date register = new java.sql.Date(sdf.parse(us.getregisterTime()).getTime());
java.sql.Date lastlogin = new java.sql.Date(sdf.parse(us.getLastLogin()).getTime());
System.out.println(lastlogin.toString());
psts2.setDate(5, register);
psts2.setDate(6, lastlogin);
} catch (ParseException e) {
e.printStackTrace();
}
要插入的時間是2017-06-21
System.out.println(lastlogin.toString()); 輸出的也是正確的:2017-06-21
但是插入到資料庫中后,時間成為2017-06-20,少了一天,register對應的時間也是少了一天
資料庫的time_zone 是“+08:00”,CST
將欄位改成Datetime也不行
那個地方出問題了?
uj5u.com熱心網友回復:
自己頂,在線等uj5u.com熱心網友回復:
繼續等。。。。uj5u.com熱心網友回復:
感覺是時區問題,你最好是將時間精確到小時,看下相差多少個小時,這樣方便查出原因。uj5u.com熱心網友回復:
時區設定了cst,+08:00,也還是不行
uj5u.com熱心網友回復:
你sql date 和util date轉化的方式有問題,你可以查查這個2個是怎么相互轉化的 ,總感覺你的轉化太麻煩了uj5u.com熱心網友回復:
時間轉換用util包uj5u.com熱心網友回復:
java.util.Dateuj5u.com熱心網友回復:
看看,這個是否能解決你的問題。https://www.jianshu.com/p/ea7ef2d29940
uj5u.com熱心網友回復:
先轉成“yyyy-MM-dd”字串,再轉成你的“yyyy-MM-dd”時間格式。uj5u.com熱心網友回復:
你用的mysql 是5.x版本的 還是 8.x版本的,8.x版本的.URL設定的時候還要設定時區 serverTimezone=UTC,這樣的話日期就會隔一天,剛好我遇到了這個問題.你把 serverTimezone 的值改下,比如 serverTimezone=Asia/Shanghai;我用8.x版本的mysql連接資料庫的時候都遇到好幾個問題.比如 Driver,5.x版本的mysql 的Driver="com.mysql.jdbc.Driver";然而 8.x版本的mysql的Driver ="com.mysql.cj.jdbc.Driver";還有5.x版本的URL 不需要設定什么 時區,字符集,SSL ,rewriteBatchedStatements 等一系列問題.感覺變麻煩了uj5u.com熱心網友回復:
用simpleDateFormat類,在關聯patternuj5u.com熱心網友回復:
可以試試用jdk8 這個時間java.time.LocalDateuj5u.com熱心網友回復:
把資料庫中格式改成timestamp試試,像這樣
uj5u.com熱心網友回復:
剛剛圖片沒有發出去uj5u.com熱心網友回復:
這。。如果是要插入資料庫的話。字串就行了啊。。。uj5u.com熱心網友回復:
你需要將要添加的時間強調一下為java.util.Date,然后進行轉換,把util的Date轉成Sql的Date,就不會錯了uj5u.com熱心網友回復:
在資料庫連接后加 &serverTimezone=Asia/Shanghai 試試uj5u.com熱心網友回復:
時區問題,新版mysql默認UTC和我們差了13小時uj5u.com熱心網友回復:
是因為時區問題,在連接串后面加上serverTimezone=CTTuj5u.com熱心網友回復:
時區問題是java連接sql時設定的
jdbc:mysql://localhost:3306/database?serverTimezone=Asia/Shanghai
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/141103.html
標籤:Java SE
上一篇:方法多載發現知識薄弱漏洞!
下一篇:求助大佬
