mysql中用來表示時間的三種類型date, datetime, timestamp (如果算上int的話,四種) 比較容易混淆,下面就比較一下這三種類型的異同
相同點
都可以用來表示時間
都呈現字串顯示
#不同點
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都保留到秒,而忽略毫秒。
時間格式
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'格式總是不會錯
以上是Mysql中的Datetime和Timestamp不同之處的詳細內容。更多資訊請關注PHP中文網其他相關文章!