タイムスタンプを格納するためにMySQLで大きな整数または通常の整数を使用する必要がありますか?組み込みのタイムスタンプや日時ではなくINTに格納する予定なので、どのINTタイプを使用する必要がありますか?
17621 次
3 に答える
17
Intは2038年に負にロールオーバーします(UNIXタイムスタンプを使用している場合):http://en.wikipedia.org/wiki/2038_problem。
したがって、BIGINTがおそらく最も安全な選択です
于 2010-01-08T22:35:00.833 に答える
13
これは、DBMSがタイムスタンプデータ用に最適化する可能性が最も高いため、タイムスタンプに保存する必要があります。
MySQL開発者がタイムスタンプを期待どおりに機能させるために費やしたすべてのハードワークを犠牲にし、ほぼ確実に機能しないものに置き換える理由について、私は興味があります。
整数を使用したい理由を述べていないので、それは一時的な狂気であり、すぐに回復すると思います:-)
于 2010-01-08T22:33:48.243 に答える
9
それはあなたが何をしたいかに完全に依存すると思います。時間/日付タイプにはいくつかの適切なタイプがあります(http://dev.mysql.com/doc/refman/5.0/en/date-and-time-type-overview.htmlを参照) 。
DATE
-通常は3バイト、範囲:1000-01-01
〜9999-12-31
。DATETIME
-8バイト、範囲1000-01-01 00:00:00
は9999-12-31 23:59:59
TIMESTAMP
-4バイトの範囲は1970-01-01 00:00:01
UTCから2038-01-19 03:14:07
UTCです。次に、注意すべきセマンティックの問題がいくつかあります。
(intはTIMESTAMPのように4バイト、bigintはDATETIMEのように8バイトです)
- 日付は暦日を格納し、日時とタイムスタンプは両方とも日付と時刻を2番目の精度で格納します(1秒未満の精度は日付演算でサポートされますが、保存にはサポートされません)
- タイムスタンプはUTC値を格納します。つまり、そこに固定する値はすべて、セッションのタイムゾーン(デフォルトではサーバーのタイムゾーン)からUTCに変換され、保存されます。取得時に、UTC値はセッションで有効なタイムゾーンに再び変換されます。
- タイムスタンプは、挿入または更新、あるいはその両方で現在のタイムスタンプを自動的に取得するように宣言できます。詳細については、マニュアルをよく読んでください(http://dev.mysql.com/doc/refman/5.1/en/timestamp.htmlを参照) 。
于 2010-01-08T22:58:30.043 に答える