Rumah >pangkalan data >tutorial mysql >Apakah perbezaan antara jenis data MySQL DATETIME dan TIMESTAMP?

Apakah perbezaan antara jenis data MySQL DATETIME dan TIMESTAMP?

王林
王林ke hadapan
2023-09-17 23:41:031214semak imbas

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

Kedua-dua jenis data menyimpan data dalam format "YYYY-MM-DD HH:MM:SS" dan termasuk tarikh dan masa. Walaupun persamaan ini, ia mempunyai perbezaan berikut -

  • Julat - Jenis data datetime menyokong tarikh dan masa antara 1000 - 01-01 00:00:00 dan 9999-12-31 23: 59:59. Walau bagaimanapun, jenis data cap masa menyokong tarikh dan masa antara "1970-01-01 00:00:01" dan "2038-01-19 08:44:07".
  • Saiz - Masa tarikh memerlukan 5 bait ditambah 3 bait tambahan untuk penyimpanan data saat pecahan. Sebaliknya, jenis data cap masa memerlukan 4 bait ditambah 3 bait tambahan untuk penyimpanan data saat pecahan. Tetapi sebelum MySQL 5.6.4, DateTime memerlukan 8 bait ditambah 3 bait tambahan untuk penyimpanan data saat pecahan.
  • Penukaran dari satu zon waktu ke zon waktu yang lain - Sebenarnya dalam MySQL5+, nilai cap waktu ditukar dari masa semasa kepada UTC dan sebaliknya, manakala datetime tidak mengalami sebarang penukaran.
  • Mengindeks - Data cap masa boleh diindeks, tetapi data masa tarikh tidak boleh.
  • Mengindeks - Data cap masa boleh diindeks, tetapi data masa tarikh tidak boleh. li>
  • Query Cache - Pertanyaan jenis data cap masa boleh dicache, tetapi pertanyaan jenis data masa tarikh tidak boleh dicache.

Di atas adalah beberapa perbezaan utama antara jenis data DATETIME dan TIMESTAMP, contoh berikut akan menunjukkannya -

Contoh

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)

Kini, dalam pertanyaan berikut, kami telah menukar zon waktu kepada UTC-05:00 dan mempunyai Keputusan untuk jadual jenis data TIMESTAMP juga telah berubah.

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)

output

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

Atas ialah kandungan terperinci Apakah perbezaan antara jenis data MySQL DATETIME dan TIMESTAMP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:tutorialspoint.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam