0

さまざまなタイム ゾーンから記録された日付を持つ mySQL テーブルがあります。mySQL で SELECT ステートメントを実行しているときに、DateTime 値を表示ユーザーの TimeZone に変換するにはどうすればよいですか?

    SELECT ClientID,
        convert_tz(MessageDate,???,???)
        MeetingType,
        MeetingDate,
        Comments,
        CompanyName
    FROM clientCompNotes
    WHERE ClID = 970392281 AND CompanyID=411972145

問題は、次のように、「MessageDate」フィールドに記録された日付から任意のタイムゾーンを受け入れることです。

 Wed May 30 2012 12:51:02 GMT-0400 (Eastern Daylight Time)

どうもありがとう

デニス

4

2 に答える 2

1
CONVERT_TZ(dt,from_tz,to_tz)

from_tz、現在時刻が入っているタイムゾーンであり、to_tz変換したいタイムゾーンです。

于 2012-05-30T17:21:03.183 に答える
1

これを行う必要はありません。TIMESTAMPタイプ列に時間を格納し、セッションtime_zone変数を適切に設定すると、MySQL がタイムゾーン変換を実行します。マニュアルに記載されているように:

MySQL サーバーは、いくつかのタイム ゾーン設定を維持します。

[...]

  • 接続ごとのタイム ゾーン。time_zone接続する各クライアントには、セッション変数によって指定される独自のタイム ゾーン設定があります。最初に、セッション変数はグローバルtime_zone変数から値を取得しますが、クライアントは次のステートメントで独自のタイム ゾーンを変更できます。

    mysql> SET time_zone = タイムゾーン;

現在のセッションのタイム ゾーン設定は、ゾーンに依存する時間値の表示と保存に影響します。NOW()これには、やなどの関数によって表示されるCURTIME()値、および列に格納され、列から取得される値が含まれTIMESTAMPます。列の値はTIMESTAMP、現在のタイム ゾーンから UTC に変換されて保存され、UTC から現在のタイム ゾーンに変換されて取得されます。

現在のタイム ゾーン設定は、 、、または列のUTC_TIMESTAMP()値などの関数によって表示される値には影響しません。これらのデータ型の値も UTC で保存されません。タイムゾーンは、値から変換する場合にのみ適用されます。、、または値のロケール固有の演算が必要な場合は、それらを UTC に変換し、演算を実行してから元に戻します。DATETIMEDATETIMETIMESTAMPDATETIMEDATETIME

于 2012-05-30T18:03:47.017 に答える