MySQL資料型別 -- 日期時間型
阿新 • • 發佈:2018-12-11
在MySQL關係型資料庫中,MySQL支援的資料型別非常豐富。它主要分為3大類,即:數值型,日期時間性,字元型。而實際上這三類資料型別可以進一步的細分擴充套件,可以根據業務需要選擇最適合的一種。本文主要介紹日期時間型別,並演示其用法。
一、日期時間型 MySQL支援的日期時間型別可以進一步細分,即可以分為日期型,時間型,日期時間型,時間戳等。如下圖所示: 二、日期時間型儲存需求
三、日期時間型零值顯示
四、日期時間型演示
mysql> show variables like 'version'; +---------------+------------+ | Variable_name | Value | +---------------+------------+ | version | 5.7.22-log | +---------------+------------+ mysql> CREATE TABLE tb_date_time -> ( -> col1 date, -> col2 time, -> col3 datetime, -> col4 timestamp DEFAULT current_timestamp -> ); Query OK, 0 rows affected (0.17 sec) mysql> select 'Leshami' as Author -> union all -> select 'http://blog.csdn.net/leshami'; +------------------------------+ | Author | +------------------------------+ | Leshami | | http://blog.csdn.net/leshami | +------------------------------+ mysql> INSERT INTO tb_date_time(col1, col2, col3) -> VALUES (now(), now(), now()); Query OK, 1 row affected, 1 warning (0.03 sec) mysql> SELECT * FROM tb_date_time; +------------+----------+---------------------+---------------------+ | col1 | col2 | col3 | col4 | +------------+----------+---------------------+---------------------+ | 2018-09-23 | 18:07:13 | 2018-09-23 18:07:13 | 2018-09-23 18:07:13 | +------------+----------+---------------------+---------------------+ 1 row in set (0.00 sec) -- 檢視系統日期時間 mysql> system date Sun Sep 23 18:08:18 CST 2018 -- 在mysql層臨時修改一下時區,假定在這裡修改為+7時區 mysql> set time_zone='+7:00'; Query OK, 0 rows affected (0.00 sec) -- 再次查看錶,col4列上的時間則提前了一小時 -- 也即是時區會影響時間戳列 mysql> SELECT * FROM tb_date_time; +------------+----------+---------------------+---------------------+ | col1 | col2 | col3 | col4 | +------------+----------+---------------------+---------------------+ | 2018-09-23 | 18:07:13 | 2018-09-23 18:07:13 | 2018-09-23 17:07:13 | +------------+----------+---------------------+---------------------+ 注意對比TIMESTAMP與DATETIME TIMESTAMP需要4個位元組,而DATETIME需要5個位元組。 TIMESTAMP和DATETIME都需要額外的位元組來獲得小數秒的精度。 TIMESTAMP值的範圍為1970-01-01 00:00:01 UTC至2038-01-19 03:14:07 UTC。 如果要儲存超過2038的時間值,則應使用DATETIME而不是TIMESTAMP。 -- 檢視當前時間 mysql> SET @dt = NOW(); Query OK, 0 rows affected (0.03 sec) mysql> SELECT @dt; +---------------------+ | @dt | +---------------------+ | 2018-09-23 18:08:28 | +---------------------+ 1 row in set (0.00 sec) mysql> SELECT DATE(@dt); +------------+ | DATE(@dt) | +------------+ | 2018-09-23 | +------------+ 1 row in set (0.00 sec)