問題:在應用程序服務器的正確時間,數據庫中的錯誤。日期時間正確的應用程序,但錯誤的MySQL [時區]
我在中國,時區爲UTC + 8 我使用hibernate。實體定義如下(語言:斯卡拉)
class CargoJournal {
@Type(`type`="org.jadira.usertype.dateandtime.joda.PersistentLocalDateTime")
var deliverTime: LocalDateTime = _
@Temporal(TemporalType.TIMESTAMP)
@Column(nullable=false)
var logDate:Date = _
}
我打開休眠日誌,在我的應用服務器中查看以下內容。當前時間是週四09月13日11時08分44秒CST 2012
insert into wms_history_cargo_journal (deliver_time, log_date)
binding parameter [1] as [TIMESTAMP] - 2012-09-13 11:08:44.25
binding parameter [2] as [TIMESTAMP] - Thu Sep 13 11:08:44 CST 2012
在我的數據庫服務器:
mysql> select timediff(now(),convert_tz(now(),@@session.time_zone,'+00:00'));
+----------------------------------------------------------------+
| timediff(now(),convert_tz(now(),@@session.time_zone,'+00:00')) |
+----------------------------------------------------------------+
| 08:00:00 |
+----------------------------------------------------------------+
所以MySQL的時區是正確的。 UTC + 8
後從MySQL選擇:
mysql> SELECT deliver_time, log_date FROM wms_history_cargo_journal;
+---------------------+---------------------+
| deliver_time | log_date |
+---------------------+---------------------+
| 2012-09-13 11:08:44 | 2012-09-13 03:08:44 |
+---------------------+---------------------+
的LOG_DATE是錯誤的!
爲什麼你的'logDate'字段沒有註解'@Type(type =「org.jadira.usertype.dateandtime.joda.PersistentLocalDateTime」)'?由於'LocalDateTime'數據類型和相應的註釋,我假設'deliverTime'按預期工作,但是你的'logDate'不起作用,因爲它沒有類似的映射? –