mysql 日期和時間類型


日期和時間類型

表示時間值的日期和時間類型爲DATETIME、DATE、TIMESTAMP、TIME和YEAR。

每個時間類型有一個有效值範圍和一個"零"值,當指定不合法的MySQL不能表示的值時使用"零"值。

TIMESTAMP類型有專有的自動更新特性,將在後面描述。

類型
大小範圍格式用途
DATE31000-01-01/9999-12-31YYYY-MM-DD日期值
TIME3'-838:59:59'/'838:59:59'HH:MM:SS時間值或持續時間
YEAR11901/2155YYYY年份值
DATETIME81000-01-01 00:00:00/9999-12-31 23:59:59YYYY-MM-DD HH:MM:SS混合日期和時間值
TIMESTAMP4

1970-01-01 00:00:00/2038

結束時間是第 2147483647 秒,北京時間 2038-1-19 11:14:07,格林尼治時間 2038年1月19日 凌晨 03:14:07

YYYYMMDD HHMMS


日期時間類型

MySQL數據類型含義
date日期 '2008-12-2'
time時間 '12:25:36'
datetime日期時間 '2008-12-2 22:06:44'
timestamp自動存儲記錄修改時間

注意:若定義一個字段爲timestamp,這個字段裏的時間數據會隨其他字段修改的時候自動刷新,所以這個數據類型的字段可以存放這條記錄最後被修改的時間。


創建一個t8表,測試:
mysql> create table t8 ( n1 year, n2 date, n3 time, n4 datetime );
Query OK, 0 rows affected (0.04 sec)

#n1(year)插入"1901"值.
mysql> insert into t8 (n1) values (1901);
Query OK, 1 row affected (0.00 sec)

#查看錶中的數據.
mysql> select * from t8;
+------+------+------+------+
| n1   | n2   | n3   | n4   |
+------+------+------+------+
| 1901 | NULL | NULL | NULL |
+------+------+------+------+
1 row in set (0.00 sec)

#n2(date)插入"2017-12-04"值.
mysql> insert into t8 (n2) values ("2017-12-04");
Query OK, 1 row affected (0.04 sec)

#查看錶中的數據.
mysql> select * from t8;
+------+------------+------+------+
| n1   | n2         | n3   | n4   |
+------+------------+------+------+
| 1901 | NULL       | NULL | NULL |
| NULL | 2017-12-04 | NULL | NULL |
+------+------------+------+------+
2 rows in set (0.00 sec)

#n3(time)插入"18:12:03"值.
mysql> insert into t8 (n3) values ("18:12:03");
Query OK, 1 row affected (0.01 sec)
mysql> select * from t8;
+------+------------+----------+------+
| n1   | n2         | n3       | n4   |
+------+------------+----------+------+
| 1901 | NULL       | NULL     | NULL |
| NULL | 2017-12-04 | NULL     | NULL |
| NULL | NULL       | 18:12:03 | NULL |
+------+------------+----------+------+
3 rows in set (0.00 sec)

#n4(datetime)插入"2018-12-03 18:12:03"值.
mysql> insert into t8 (n4) values ("2018-12-03 18:12:03");
Query OK, 1 row affected (0.00 sec)
mysql> select * from t8;
+------+------------+----------+---------------------+
| n1   | n2         | n3       | n4                  |
+------+------------+----------+---------------------+
| 1901 | NULL       | NULL     | NULL                |
| NULL | 2017-12-04 | NULL     | NULL                |
| NULL | NULL       | 18:12:03 | NULL                |
| NULL | NULL       | NULL     | 2018-12-03 18:12:03 |
+------+------------+----------+---------------------+
4 rows in set (0.00 sec)

#timestamp屬性,自動更新時間戳.
mysql> create table t9 (
    -> id int,
    -> ts timestamp
    -> );
Query OK, 0 rows affected (0.00 sec)
mysql> insert into t9 (id) values (1);
Query OK, 1 row affected (0.00 sec)
mysql> select * from t9;
+------+---------------------+
| id   | ts                  |
+------+---------------------+
|    1 | 2019-01-26 19:04:40 |
+------+---------------------+
1 row in set (0.00 sec)


TIMESTAMP和DATETIME的不同點:

兩者的存儲方式不一樣

對於TIMESTAMP,它把客戶端插入的時間從當前時區轉化爲UTC(世界標準時間)進行存儲。查詢時,將其又轉化爲客戶端當前時區進行返回。

而對於DATETIME,不做任何改變,基本上是原樣輸入和輸出。

兩者所能存儲的時間範圍不一樣

timestamp所能存儲的時間範圍爲:'1970-01-01 00:00:01.000000' 到 '2038-01-19 03:14:07.999999'。

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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章