2

次の形式で日付を保存するためのMySQL列の正しいタイプを知っている人はいますか?例:2012-11-11T11:09:28 + 00:00

更新:私が興味を持ったの+xx:xxは、アクションを実行したユーザーのタイムゾーンを保存する方法でした。質問は、タイムゾーンも含むMySQLの日付形式があるかどうかでした。MySQLのドキュメントを読んでも関連情報が見つからなかったので、ここに書きました。

4

1 に答える 1

4

MySQL には、タイムゾーンを含む DATE/TIME カラム タイプはありません。タイムスタンプはタイムスタンプであり、絶対的な時点であるため、実際には必要ありません。タイムゾーンは、タイムスタンプを現地時間としてフォーマットする場合にのみ関連しますが、MySQL はタイムゾーンに関係なく、日付を絶対的な時点として保存します。

タイムゾーン情報を含む値を保存する場合は、文字列として保存する必要があります。

しかし、より良い戦略はとにかくこれです:

  • アプリケーション内のすべての時間を 1 つのタイムゾーンに正規化します。UTC を選択することをお勧めします
  • 正規化された時刻をデータベースに保存する
  • ユーザーの好みのタイムゾーンを保存する
  • データベースから時刻を取得して表示するときは、それらを UTC からユーザーの目的のタイムゾーンに変換します

これは、これを処理する典型的な方法です。アプリにとって意味がある場合は、タイムスタンプ列の隣の別の列にタイムゾーンを保存することもできます。

`time_utc` (DATETIME) | `timezone` (VARCHAR)
----------------------+---------------------
2012-11-11 11:11:11   | Europe/Berlin

このようにして、データベース内のタイムスタンプを統一して計算/クエリを実行し、必要に応じてローカル時間でフォーマットすることができます。

于 2012-11-11T13:40:08.140 に答える