mysqlにおけるtimestamp,datetime,intタイプの違いと優劣

1551 ワード

以下の内容は、インターネットからのフィルタリングを統合します.
int 1.4バイトを占有する2.インデックスを確立した後、クエリー速度が速い3.条件範囲検索はbetweenを使用することができる4.mysqlを使用できない時間関数の結論:大量の時間範囲クエリーを必要とするデータテーブルに適している
datetime 1.8バイト占有2.空の値を許可し、値をカスタマイズでき、システムは自動的に値を変更しません.3.実際のフォーマット保存(Just stores what you have stored and retrieves the same thing which you have stored.)
  • タイムゾーンに関係なく(It has nothing to deal with the TIMEZONE and Conversion.)
  • は、datetimeフィールドの値を指定するときにnow()変数を使用して、システムの現在の時間を自動的に挿入することができる.結論:datetimeタイプは、レコード内の他のフィールドの値をどのように変更しても、手動で変更しない限り、データの元の作成時間を記録するのに適しています.

  • timestamp 1.4バイト占有2.NULL値は許可されますが、値をカスタマイズすることはできませんので、NULL値の場合は何の意味もありません.3.TIMESTAMP値は、1970よりも早く、または2037よりも遅くすることはできません.これは、DATETIMEまたはDATE値に対しては有効であるが、TIMESTAMP値に対しては無効であり、このようなオブジェクトに割り当てられた場合は0に変換される日付を示す.4.値をUTC形式で保存(it stores the number of milliseconds)
    5.タイムゾーン変換、記憶時に現在のタイムゾーンを変換し、検索時に現在のタイムゾーンに変換する.
  • デフォルトはCURRENT_TIMESTAMP()は、実は現在のシステム時間です.
  • データベースは自動的に値を変更するので、レコードを挿入するときにtimestampフィールドの名前とtimestampフィールドの値を指定する必要はありません.テーブルを設計するときにtimestampフィールドを追加するだけでいいです.挿入すると、このフィールドの値は自動的に現在のシステム時間になります.
  • デフォルトでは、以降の任意の時間にテーブルのレコードを変更すると、対応するレコードのtimestamp値が自動的に現在のシステム時間に更新されます.
  • 必要に応じてtimestampが自動的に更新されないように設定できます.DEFAULT CURRENT_を設定することでTIMESTAMPは実現可能です.自動更新の変更:field_time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE修正非自動更新field_time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP

  • 結論:timestampタイプは、レコード内の他のフィールドの値を変更すると、timestampフィールドの値が自動的に更新されるため、データを記録するための最後の変更時間に適しています.(必要に応じてtimestampを自動的に更新しないように設定できます)