mysql 時間類型 datetime,timestamp

 

 

CURRENT_TIMESTAMP 的 timestamp 意思是 根據 mysql 的當前時間,使用mysql 的當前時間。html

參考地址:http://blog.sina.com.cn/s/blog_67cc6e7d0100nrwk.htmlmysql

datetime 和 timestamp 都是保存時間格式爲 YYYY-MM-DD HH:MM:SS 一共10多個字符,sql

datetime 保存的時間範圍較大,年的數字在:1000---9999之間數據庫

timestamp 保存的時間較小,年的數字在:1970 --2037 之間設計

mysql中用於表示時間的三種類型date, datetime, timestamp (若是算上int的話,四種) 比較容易混淆,下面就比較一下這三種類型的異同htm

相同點對象

均可以用於表示時間
都呈字符串顯示blog

不一樣點字符串

1.顧名思義,date只表示'YYYY-MM-DD'形式的日期,datetime表示'YYYY-MM-DD HH:mm:ss'形式的日期加時間,timestamp與datetime顯示形式同樣。
2.date和datetime可表示的時間範圍爲'1000-01-01'到'9999-12-31',timestamp因爲受32位int型的限制,能表示'1970-01-01 00:00:01'到'2038-01-19 03:14:07'的UTC時間。
3.mysql在存儲timestamp類型時會將時間轉爲UTC時間,而後讀取的時候再恢復成當前時區。 假如你存儲了一個timestamp類型的值以後,修改了mysql的時區,當你再讀取這個值時就會獲得一個錯誤的時間。而這種狀況在date和datetime中不會發生。
4.timestamp類型提供了自動更新的功能,你只須要將它的默認值設置爲CURRENT_TIMESTAMP。
5.除了date是保留到天,datetime和timestamp都保留到秒,而忽略毫秒。get

時間格式

mysql提供了一種比較寬鬆的時間字符串格式用於增刪改查。參考iso時間格式,通常習慣於寫成'2013-06-05 16:34:18'。可是你也能夠簡寫成'13-6-5',可是這樣容易形成混淆,好比mysql也會把'13:6:5'也當作年月日處理,而當'13:16:5'這種形式,則被mysql認爲是不正確的格式,會給出一個警告,而後存入數據庫的值是'0000-00-00 00:00:00'。

手冊中還特地提到了一種狀況,就是當年的值是0~69時,mysql認爲是2000~2069,而70~99時則認爲是1970~1999。我感受是一種多此一舉了。

總之,以不變應萬變,使用'YYYY-MM-DD HH:mm:ss'格式老是不會錯的。

 

所以仍是 使用 datetime 吧看起來

 

datetime

1. 佔用8個字節2. 容許爲空值,能夠自定義值,系統不會自動修改其值。3. 實際格式儲存(Just stores what you have stored and retrieves the same thing which you have stored.)4. 與時區無關(It has nothing to deal with the TIMEZONE and Conversion.)5. 不能夠設定默認值,因此在不容許爲空值的狀況下,必須手動指定datetime字段的值才能夠成功插入數據。6. 能夠在指定datetime字段的值的時候使用now()變量來自動插入系統的當前時間。結論:datetime類型適合用來記錄數據的原始的建立時間,由於不管你怎麼更改記錄中其餘字段的值,datetime字段的值都不會改變,除非你手動更改它。 timestamp1. 佔用4個字節2. 容許爲空值,可是不能夠自定義值,因此爲空值時沒有任何意義。3. TIMESTAMP值不能早於1970或晚於2037。這說明一個日期,例如'1968-01-01',雖然對於DATETIME或DATE值是有效的,但對於TIMESTAMP值卻無效,若是分配給這樣一個對象將被轉換爲0。4.值以UTC格式保存( it stores the number of milliseconds)5.時區轉化 ,存儲時對當前的時區進行轉換,檢索時再轉換回當前的時區。6. 默認值爲CURRENT_TIMESTAMP(),其實也就是當前的系統時間。7. 數據庫會自動修改其值,因此在插入記錄時不須要指定timestamp字段的名稱和timestamp字段的值,你只須要在設計表的時候添加一個timestamp字段便可,插入後該字段的值會自動變爲當前系統時間。8. 之後任什麼時候間修改表中的記錄時,對應記錄的timestamp值會自動被更新爲當前的系統時間。

結論:timestamp類型適合用來記錄數據的最後修改時間,由於只要你更改了記錄中其餘字段的值,timestamp字段的值都會被自動更新。

前提是 timestamp 要設置默認值爲 : CURRENT_TIMESTAMP  當那條數據被修改好 ,那麼時間自動變爲當前的時間

相關文章
相關標籤/搜索