1. 程式人生 > >MySQL資料型別 -- 日期時間型

MySQL資料型別 -- 日期時間型

在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)