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分