DATE_FORMAT関数の計算結果で日付や時刻がずれて表示されます

DATE_FORMAT関数の計算結果で日付や時刻がずれて表示される場合、タイムゾーンの指定が正しくないことが考えられます。
日付フィールド、または時刻フィールドのタイムゾーンは、協定世界時で固定です。これらのフィールドを計算式に使用する場合は、協定世界時のタイムゾーンID「Etc/GMT」を指定します。ほかのタイムゾーンを指定すると、計算結果が期待どおりになりません。

たとえば、タイムゾーンに「大阪、札幌、東京」(Asia/Tokyo)を設定すると、+9時間ずれて表示されます。

  • 誤ったタイムゾーンの計算式:
    DATE_FORMAT(フィールドA, "HH時mm分", "Asia/Tokyo")
    フィールドAの値が「9:00」の場合の計算結果:18時00分

協定世界時のタイムゾーンID「Etc/GMT」を指定することで、正しい時刻が表示されます。

  • 正しいタイムゾーンの計算式:
    DATE_FORMAT(フィールドA, "HH時mm分", "Etc/GMT")
    フィールドAの値が「9:00」の場合の計算結果:09時00分