timestamp和date及datetime的區別

DATE只保存日期,不保存時分秒

DATETIME類型用在你需要同時包含日期和時間信息的值時。MySQL檢索並且以'YYYY-MM-DD HH:MM:SS'格式顯示DATETIME值,支持的範圍是'1000-01-01 00:00:00'到'9999-12-31 23:59:59'。

TIMESTAMP列類型提供一種類型,你可以使用它自動地用當前的日期和時間標記INSERT或UPDATE的操作。如果你有多個TIMESTAMP列,只有第一個自動更新。

自動更新第一個TIMESTAMP列在下列任何條件下發生:

列沒有明確地在一個INSERT或LOAD DATA INFILE語句中指定。

列沒有明確地在一個UPDATE語句中指定且一些另外的列改變值。(注意一個UPDATE設置一個列爲它已經有的值,這將不引起TIMESTAMP列被更新,因爲如果你設置一個列爲它當前的值,MySQL爲了效率而忽略更改。)

你明確地設定TIMESTAMP列爲NULL.

除第一個以外的TIMESTAMP列也可以設置到當前的日期和時間,只要將列設爲NULL,或NOW()。

自動更新TIMESTAMP時建表語句應爲如下類似
CREATE TABLE `t_jindou_xx` (
  `account` varchar(18) NOT NULL default '',
  `money` decimal(10,2) NOT NULL default '0.00',
  `update_date` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
  PRIMARY KEY  (`account`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

TIMESTAMP類型保存的值不能比1970早或比2037晚,這意味着,一個日期例如'1968-01-01',當作爲一個DATETIME或DATE值合法時,它不是一個正確TIMESTAMP值,並且 如果賦值給這樣一個對象,它將被變換到0。



1.範圍
timestamp:值不能早於1970或晚於2037
datetime:以'YYYY-MM-DD HH:MM:SS'格式檢索和顯示datetime 值。支持的範圍爲'1000-01-01 00:00:00'到'9999-12-31 23:59:59'

2.儲存
timestamp:   4個字節儲存    值以UTC格式保存    時區轉化,存儲時對當前的時區進行轉換,檢索時再轉換回當前的時區。
datetime:     8個字節儲存     實際格式儲存          與時區無關

發佈了19 篇原創文章 · 獲贊 24 · 訪問量 11萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章