標籤:範圍 extra second retrieve -- mil values 支援 0.00
相同
顯示
TIMESTAMP列的顯示格式與DATETIME列相同。換句話說,顯示寬度固定在19字元,並且格式為YYYY-MM-DD HH:MM:SS。
不同
範圍
datetime 以‘YYYY-MM-DD HH:MM:SS‘格式檢索和顯示DATETIME值。支援的範圍為‘1000-01-01 00:00:00‘到‘9999-12-31 23:59:59‘TIMESTAMP值不能早於1970或晚於2037
儲存
TIMESTAMP
1.4個位元組儲存(Time stamp value is stored in 4 bytes)(預設為非空)
2.值以UTC格式儲存( it stores the number of milliseconds)
3.時區轉化 ,儲存時對當前的時區進行轉換,檢索時再轉換回當前的時區。
datetime
1.8個位元組儲存(8 bytes storage)
2.實際格式儲存(Just stores what you have stored and retrieves the same thing which you have stored.)
3.與時區不轉換(It has nothing to deal with the TIMEZONE and Conversion.)
執行個體對比
現在我來做個時區對他們的影響。
1.先插入一個資料insert into `t8` values(now(), now());
2.改變用戶端時區(東9區,日本時區)。
3.再次顯示插入的資料,變化了,timestamp類型的資料 增加了 1個小時
mysql> desc t2;
+-------+-----------+------+-----+-------------------+-----------------------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-----------+------+-----+-------------------+-----------------------------+
| date1 | datetime | YES | | NULL | |
| date2 | timestamp | NO | | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP |
+-------+-----------+------+-----+-------------------+-----------------------------+
2 rows in set (0.00 sec)
mysql> insert into t2 values (now(),now());
Query OK, 1 row affected (0.00 sec)
mysql> select * from t2;
+---------------------+---------------------+
| date1 | date2 |
+---------------------+---------------------+
| 2015-04-08 13:45:46 | 2015-04-08 13:45:46 |
+---------------------+---------------------+
1 row in set (0.00 sec)
mysql> set time_zone=‘+9:00‘;
Query OK, 0 rows affected (0.00 sec)
mysql> select * from t2;
+---------------------+---------------------+
| date1 | date2 |
+---------------------+---------------------+
| 2015-04-08 13:45:46 | 2015-04-08 14:45:46 |
+---------------------+---------------------+
1 row in set (0.00 sec)
mysql中datetime和timestamp類型的區別