1

データベース内のデータを使用してジョブのスケジューリングを処理するプロセスがあります。ユーザーは、ジョブの実行日時を設定するときにタイムゾーンを選択できます。

ユーザーのタイムゾーンをサーバーのタイムゾーンに変換できる必要があります。

サーバーのタイムゾーンをハードコーディングしたくありません。私の問題を確認するには、以下のコードを参照してください。

タイムゾーン テーブルが利用可能で、データがあることを確認しました。

次のクエリは、「EDT」のみを返します。

select IF(@@session.time_zone = 'SYSTEM', @@system_time_zone, @@session.time_zone)

しかし、EDT を convert_tz に正常に戻すことができません。私の問題を示すために、次のクエリを実行してください。

select schedule_time,
time_zone,
convert_tz(schedule_time,'US/Eastern','US/Pacific') 'convert_tz1',
convert_tz(schedule_time,'EST','PST') 'convert_tz2'
from batch_control

以下がリターンです。

2013-08-27 01:00:00    EST    2013-08-26 22:00:00    NULL
2013-08-26 01:00:00    EST    2013-08-25 22:00:00    NULL
2013-08-26 01:00:00    EST    2013-08-25 22:00:00    NULL
2012-09-28 15:22:00    EST    2012-09-28 12:22:00    NULL
2012-10-15 09:52:00    EST    2012-10-15 06:52:00    NULL

mysql自体からタイムゾーン値の出力を取得してconvert_tz関数に戻すことができない理由について混乱しています。

私の最終的なコードは次のようになります。

select convert_tz(schedule_time,time_zone,IF(@@session.time_zone = 'SYSTEM', @@system_time_zone, @@session.time_zone)) 'execute_time'
from batch_control 
4

0 に答える 0