ホームページ >データベース >mysql チュートリアル >MySQL の DATETIME と TIMESTAMP データ型の違いは何ですか?

MySQL の DATETIME と TIMESTAMP データ型の違いは何ですか?

王林
王林転載
2023-09-17 23:41:031214ブラウズ

MySQL DATETIME 和 TIMESTAMP 数据类型有什么区别?

両方のデータ型は、データを「YYYY-MM-DD HH:MM:SS」形式で保存し、日付と時刻を含みます。これらの類似点にもかかわらず、次のような違いがあります。 -

  • Range - datetime データ型は、1000 - 01-01 00:00 :00 から 9999-12 までの日付と時刻をサポートします。 -31 23:59:59。ただし、タイムスタンプ データ型は、「1970-01-01 00:00:01」から「2038-01-19 08:44:07」までの日付と時刻をサポートします。
  • サイズ - 日時には 5 バイトに加えて、小数秒のデータ ストレージ用に 3 バイトが必要です。一方、タイムスタンプ データ型では、秒の小数点以下のデータを保存するために 4 バイトに加えて 3 バイトが必要です。ただし、MySQL 5.6.4 より前では、DateTime には 8 バイトと小数秒のデータ ストレージ用の追加 3 バイトが必要でした。
  • あるタイム ゾーンから別のタイム ゾーンへの変換 - 実際、MySQL5 では、タイムスタンプ値は現在​​時刻から UTC へ、またはその逆に変換されますが、日時は変換されません。
  • インデックス作成 - タイムスタンプ データにはインデックスを作成できますが、日時データにはインデックスを作成できません。
  • インデックス作成 - タイムスタンプ データにはインデックスを作成できますが、日時データにはインデックスを作成できません。 li>
  • クエリ キャッシュ - タイムスタンプ データ型のクエリはキャッシュできますが、日付と時刻のデータ型のクエリはキャッシュできません。

上記は、DATETIME データ型と TIMESTAMP データ型の主な違いの一部です。次の例でそれを示します。 -

Example

mysql> Create table test_datetime(time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP);
Query OK, 0 rows affected (0.44 sec)

mysql> INSERT INTO test_datetime (time) values (CURRENT_TIMESTAMP);
Query OK, 1 row affected (0.04 sec)

mysql> Select * from test_datetime;
+---------------------+
| time                |
+---------------------+
| 2017-11-14 17:29:03 |
+---------------------+
1 row in set (0.00 sec)

mysql> Create table test_timestamp(time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP);
Query OK, 0 rows affected (0.64 sec)

mysql> INSERT INTO test_timestamp (time) values (CURRENT_TIMESTAMP);
Query OK, 1 row affected (0.06 sec)

mysql> Select * from test_timestamp;
+---------------------+
| time                |
+---------------------+
| 2017-11-14 17:29:50 |
+---------------------+
1 row in set (0.00 sec)

次に、次のクエリで説明します。 , タイムゾーンを UTC-05:00 に変更し、TIMESTAMP データ型のテーブルの結果も変更されました。

mysql> SET @@session.time_zone = '-5:00';
Query OK, 0 rows affected (0.00 sec)

mysql> Select * from test_timestamp;
+---------------------+
| time                |
+---------------------+
| 2017-11-14 06:59:50 |
+---------------------+
1 row in set (0.00 sec)

出力

mysql> Select * from test_datetime;
+---------------------+
| time                |
+---------------------+
| 2017-11-14 17:29:03 |
+---------------------+
1 row in set (0.00 sec)

以上がMySQL の DATETIME と TIMESTAMP データ型の違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はtutorialspoint.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。