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

Apakah perbezaan antara jenis data MySQL DATETIME dan TIMESTAMP?

王林
Lepaskan: 2023-09-17 23:41:03
ke hadapan
1270 orang telah melayarinya

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)
Salin selepas log masuk

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)
Salin selepas log masuk

output

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

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 Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan