SQL ステートメントを使用して、現在の MySQL セッションのタイムゾーン設定を取得できます。
mysql> SELECT @@session.time_zone;
DBA が MySQL のタイムゾーンを設定していない場合、SYSTEM
オペレーティング システムのタイムゾーンを表す の値がデフォルトになります。
http://dev.mysql.com/doc/refman/5.5/en/time-zone-support.html
ファローアップ:
あなたの例のSQL文のような述語で:
select * from mytable where dt > current_ist_datetime
(指定dt
されcurrent_ist_datetime
、 datatype のDATETIME
)値に関連付けられたタイムゾーン情報がないため、値の比較はタイムゾーン変換とは無関係DATETIME
です。
つまり、datatype の列から返される値は、MySQL サーバー ( ) または MySQL セッション ( )DATETIME
の time_zone 設定の影響を受けません。SELECT @@global.time_zone
SELECT @@session.time_zone
ただし、関数によって返される値はNOW()
、セッションの time_zone 設定の影響を受けます。
IST で返されたものを取得するには、セッションの time_zone が正しく指定されていることを確認します。
SET VARIABLES time_zone = "+05:30"
(注: セッションが接続プールから取得されて返される場合、プールの他のユーザーは別の time_zone を期待していない可能性があります;...)
(注: 上記は、MySQL の DATETIME データ型の実装と Java の Date オブジェクトの実装との間の「インピーダンスの不一致」(差異) によって引き起こされる、JDBC ドライバーによって引き起こされる混乱を完全に無視しています。JDBC 接続を介して DATETIME 値を渡す場合は、それは完全に「別の混乱のボールです。」)