簡體   English   中英

JDBC SQL時區

[英]JDBC SQL Time zone

我正在將Spring與Apache Commons BasicDataSource一起使用。

時區通過以下時間顯示為格林尼治標准時間:

SELECT @@global.time_zone, @@session.time_zone;

我的輸入是在新紀元時間1386831420000和1386833220000,因此查詢應如下所示:

SELECT * FROM table WHERE AND arrival_time BETWEEN '2013-12-12 06:57:00' AND '2013-12-12 07:27:00';

我啟用了SQL配置,這實際上是要執行的查詢,所以我沒有得到正確的結果:

SELECT * FROM table WHERE AND arrival_time BETWEEN '2013-12-12 01:57:00' AND '2013-12-12 02:27:00';

請注意,由於我是EST-5,所以時間縮短了5個小時,時間應該是格林尼治標准時間(GMT)。

我的問題是:如何告訴MySQL或Spring JDBC不要使用客戶端時區,而要始終使用GMT?

如果有任何我可以解決的細節,請發表評論。

嘗試使用TO_DATE (或實現特定的日期轉換器函數)將日期字符串顯式轉換為日期類型

SELECT * 
FROM table 
WHERE arrival_time BETWEEN 
TO_DATE('2013-12-12 06:57:00', 'YYYY-MM-DD HH24:MI:SS')
AND 
TO_DATE('2013-12-12 07:27:00', 'YYYY-MM-DD HH24:MI:SS')

上面的示例在Oracle SQL中,但是在整個SQL實現中,將日期字符串顯式轉換為日期類型的原理很普遍。

聽起來JDBC驅動程序沒有正確檢測Mysql的時區設置。 您可能需要在連接字符串中指定服務器的時區。 嘗試添加

serverTimezone=UTC&useTimezone=true

連接字符串。 有關更多信息,請參見http://cs.wellesley.edu/~cs304/jdbc/connector-j.html#connector-j-reference上的JDBC文檔。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM