質問

Webアプリケーションをユーザーごとにタイムゾーン間で変換する必要がある場合、すべての日付/時刻フィールドに全面的にTIMESTAMPを使用してください。 TIMESTAMP値はUTCで保存され、取得時に接続用に設定されたタイムゾーンに変換されることを考慮してください。

IRCでこの質問をし、MySQLのドキュメントを読み、Googleを広範囲に検索し、同僚に尋ねましたが、TIMESTAMPを使用しない説得力のある理由をまだ見つけていません。

注:TIMESTAMPの範囲は1970〜2038に制限されています。私の場合、それは問題になりません。また、MySQLでPHPを使用しています。

役に立ちましたか?

解決

DATETIMEは、データで使用する任意の日付および時刻用です。

TIMESTAMPは、時刻を自動的に更新する場合に使用します。行がいつ挿入/更新されたかを知りたい場合は、TIMESTAMPを使用します。

また、TIMESTAMPはUTCでのみ保存されることに注意してください。クエリの一部として送信される前に、サーバーのローカルタイムゾーンに変換されます。

あなたの場合、DATETIMEを使用したほうが良いでしょう。 UTCが心配な場合は、問題ありません。現地時間を使用するのではなく、UTCで日付を作成するだけです。 UTC_TIMESTAMP を使用します。

他のヒント

あなたの答えはここにあると思います:

  

TIMESTAMPの範囲は1970〜2038に制限されていることを理解しています。私の場合、これは問題になりません。

特にデータベーススキーマに関しては、プロジェクトの寿命について 、慎重に推測します。データベースは、データベースを使用していたアプリケーションが消えた後も長期間使用され続ける傾向があります。

Randalphoの答えは多くの事実で間違っています!

タイムスタンプは、作成時または更新時に自動的に更新する必要はありません。

また、タイムスタンプは、サーバーの時刻ではなく、クライアントのローカル時刻に変換されます。

datetimeについては、MySQLのドキュメントをご覧ください。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top