timestamp datetime

由此牽扯出兩個問題,(1)timestamp與datetime的區別;(2)CURRENT_TIMESTAMP爲何能用於datetime類型mysql

timestamp與datetime的區別
a)DATETIME的默認值爲null;TIMESTAMP的字段默認不爲空(not null),默認值爲當前時間(CURRENT_TIMESTAMP),若是不作特殊處理,而且update語句中沒有指定該列的更新值,則默認更新爲當前時間。
這個區別就解釋了爲何平時咱們都不用能夠管這個字段就能自動更新了,由於多數時候用的是timestamp;而此處用的是datetime,不會有自動更新當前時間的機制,因此須要在上層手動更新該字段sql

b)DATETIME使用8字節的存儲空間,TIMESTAMP的存儲空間爲4字節。所以,TIMESTAMP比DATETIME的空間利用率更高。數據庫

這個區別解釋了爲啥timestamp類型用的多io

c)二者的存儲方式不同 ,對於TIMESTAMP,它把客戶端插入的時間從當前時區轉化爲UTC(世界標準時間)進行存儲。查詢時,將其又轉化爲客戶端當前時區進行返回。而對於DATETIME,不作任何改變,基本上是原樣輸入和輸出。date

d)二者所能存儲的時間範圍不同 select

timestamp所能存儲的時間範圍爲:’1970-01-01 00:00:01.000000’ 到 ‘2038-01-19 03:14:07.999999’;im

datetime所能存儲的時間範圍爲:’1000-01-01 00:00:00.000000’ 到 ‘9999-12-31 23:59:59.999999’。數據

CURRENT_TIMESTAMP爲何能用於datetime類型
在mysql 5.6以前的版本,CURRENT_TIMESTAMP只能用於timestamp類型,
5.6版本以後,CURRENT_TIMESTAMP也能用於datetime類型了
select version()查了一下數據庫發現確實版本是5.6.29客戶端

相關文章
相關標籤/搜索