mysql で時刻を表すために使用される date、datetime、timestamp の 3 種類 (int を数えると 4 種類) は比較的混同されやすいです。以下でこれら 3 種類の類似点と相違点を比較してみましょう
同じ点です。
は、文字列として表示される1。名前が示すように、dateは「YYYY-MM-DD」の形式でのみ日付を表し、datetimeは「YYYY-MM」を表します。 -DD' HH:mm:ss の形式の日付と時刻。タイムスタンプは日時と同じ形式で表示されます。
2. date と datetime で表現できる時間の範囲は '1000-01-01' から '9999-12-31' までです。タイムスタンプは '1970-01-01' を表現できます。 ' 00:00:01「から」2038-01-19 03:14:07' UTC 時間。3. Mysql は、タイムスタンプ タイプを保存するときに時刻を UTC 時刻に変換し、読み取り時に現在のタイムゾーンに復元します。
タイムスタンプ タイプの値を保存してから MySQL タイム ゾーンを変更すると、その値を再度読み取るときに間違った時間が取得されます。これは、日付と日時では発生しません。
4. タイムスタンプ タイプは自動更新機能を提供します。デフォルト値を CURRENT_TIMESTAMP に設定するだけです。
5. 日付が日単位で保持されることを除き、日時とタイムスタンプは両方とも秒単位で保持され、ミリ秒は無視されます。
mysql は、追加、削除、変更、クエリ用に比較的緩やかな時刻文字列形式を提供します。 iso 時間形式を参照してください。通常は「2013-06-05」と表記されます。 16:34:18」ただし、「13-6-5」と省略することもできますが、これにより混乱が生じやすくなります。たとえば、mysql では「13:6:5」が年、月、日として扱われ、「13:16」の場合も扱われます。 :5' 形式の場合、mysql はそれが間違った形式であると判断し、警告が表示され、データベースに保存される値は '0000-00-00 になります。 00:00:00'。
マニュアルには、現在の年の値が 0 ~ 69 の場合、mysql はそれを 2000 ~ 2069 年とみなし、70 ~ 99 の場合、1970 ~ 1999 年とみなします。 。余計な気がします。
つまり、刻々と変化する状況に適応するには、「YYYY-MM-DD HH:mm:ss」形式を使用すれば間違いはありません
以上がMysqlのDatetimeとTimestampの違いの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。