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
データ型のDATETIME
)DATETIME
に関連付けられたタイムゾーン情報がないため、値の比較はタイムゾーン変換とは無関係になります。 価値。
つまり、データ型DATETIME
の列から返される値です。 MySQLサーバーのtime_zone設定の影響を受けません(SELECT @@global.time_zone
)またはMySQLセッション(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値を渡す場合、それは全体の'別の混乱の球です。)