兩種數(shù)據(jù)類型都以“YYYY-MM-DD HH:MM:SS”格式存儲數(shù)據(jù),并包含日期和時間。盡管有這些相似之處,但它們還是有以下區(qū)別 –
- 范圍 – 日期時間數(shù)據(jù)類型支持 1000 之間的日期和時間-01-01 00:00:00 和 9999-12-31 23:59:59。但時間戳數(shù)據(jù)類型支持“1970-01-01 00:00:01”到“2038-01-19 08:44:07”之間的日期和時間。大小 – 日期時間需要 5 個字節(jié)以及 3 個附加字節(jié)用于小數(shù)秒的數(shù)據(jù)存儲。另一方面,時間戳數(shù)據(jù)類型需要 4 個字節(jié)以及 3 個附加字節(jié)用于小數(shù)秒的數(shù)據(jù)存儲。但在 MySQL 5.6.4 之前,DateTime 需要 8 個字節(jié)以及 3 個額外字節(jié)用于小數(shù)秒的數(shù)據(jù)存儲。從一個時區(qū)到另一個時區(qū)的轉(zhuǎn)換 – 實(shí)際上在 MySQL5+ 中,時間戳值從當(dāng)前時間轉(zhuǎn)換為 UTC,反之亦然,而日期時間不進(jìn)行任何轉(zhuǎn)換。索引 – 可以對時間戳數(shù)據(jù)進(jìn)行索引,但無法對日期時間數(shù)據(jù)進(jìn)行索引。索引 – 可以對時間戳數(shù)據(jù)進(jìn)行索引,但不能對日期時間數(shù)據(jù)進(jìn)行索引。 li>查詢緩存 – 可以緩存時間戳數(shù)據(jù)類型的查詢,但不能緩存日期時間數(shù)據(jù)類型的查詢。
以上是 DATETIME 之間的一些主要區(qū)別和 TIMESTAMP 數(shù)據(jù)類型,以下示例將演示它 –
示例
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)
登錄后復(fù)制
現(xiàn)在,在以下查詢中,我們已將時區(qū)更改為 UTC-05:00,并且具有 TIMESTAMP 數(shù)據(jù)類型的表的結(jié)果也發(fā)生了更改。
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)
登錄后復(fù)制
輸出
mysql> Select * from test_datetime; +---------------------+ | time | +---------------------+ | 2017-11-14 17:29:03 | +---------------------+ 1 row in set (0.00 sec)
登錄后復(fù)制
以上就是MySQL DATETIME 和 TIMESTAMP 數(shù)據(jù)類型有什么區(qū)別?的詳細(xì)內(nèi)容,更多請關(guān)注www.92cms.cn其它相關(guān)文章!