1. 程式人生 > >史上最簡單的 MySQL 教程(十)「列型別 之 日期時間型」

史上最簡單的 MySQL 教程(十)「列型別 之 日期時間型」

溫馨提示:本系列博文已經同步到 GitHub,地址為「mysql-tutorial」,歡迎感興趣的童鞋StarFork,糾錯。

列型別(資料型別)

所謂的列型別,其實就是指資料型別,即對資料進行統一的分類,從系統的角度出發是為了能夠使用統一的方式進行管理,更好的利用有限的空間。

在 SQL 中,將資料型別分成了三大類,分別為:數值型、字串型和日期時間型。

1

日期時間型

日期時間型資料,顧名思義,就是用來表示日期和時間的資料型別,共有五種型別,分別為:

  • datetime:日期時間,其格式為yyyy-MM-dd HH:mm:ss,表示的範圍是從 1000 年到 9999 年,有零值,即0000-00-00 0000:00
  • date:日期,就是datetimedate部分;
  • time:時間,或者說是時間段,為指定的某個時間區間之間,包含正負時間;
  • timestamp:時間戳,但並不是真正意義上的時間戳,其是從1970年開始計算的,格式和datetime一致;
  • year:年份,共有兩種格式,分別為year(2)year(4).

執行如下 SQL 語句建立日期時間表,進行測試:

-- 建立日期時間表
create table my_date(
    d1 datetime,
    d2 date,
    d3 time,
    d4 timestamp,
    d5 year
)charset utf8;

當咱們插入資料時,日期時間型中的time,可以為負數,甚至可以是很大的負數;year,可以使用 2 位資料插入,也可以使用 4 位資料插入;timestamp,只要當前所在的記錄被更新,該欄位就會自動更新為當前時間,且時間戳型別預設為非空的

-- 插入測試資料
insert into my_date values ('2017-05-06 13:15:00','2017-05-06','13:15:00','2017-05-06 13:15:00',2017);
insert into my_date values ('2017-05-06 13:15:00','2017-05-06','-113:15:00','2017-05-06 13:15:00'
,69);
insert into my_date values ('2017-05-06 13:15:00','2017-05-06','-2 13:15:00','2017-05-06 13:15:00',70);

3

如上圖所示,以上 3 條記錄已經插入成功,接下來,咱們再來驗證更新記錄時,時間戳型別的欄位d4是否會自動更新:

-- 更新記錄,驗證時間戳型別的欄位是否會自動更新
update my_date set d1 = '2017-05-06 13:24:00' where d5 = 1970;

5

如上圖所示,顯然咱們的結論全部得到了驗證。