MySQL 日期類型及默認設置
之前在用 MySQL 新建 table,創建日期類型列時遇到了一些問題,現在整理下來以供參考。
MySQL 的日期類型如何設置當前時間為其默認值?
答:請使用 timestamp 類型,且 默認值設為 now() 或 current_timestamp() 。
日期類型區別及用途
MySQL 的日期類型有5個,分別是: date、time、year、datetime、timestamp。
將在“菜鳥教程”和百度獲取的資料,整理成如下表格:
類型 字節 格式 用途 是否支持設置系統默認值 date 3 YYYY-MM-DD 日期值 不支持 time 3 HH:MM:SS 時間值或持續時間 不支持 year 1 YYYY 年份 不支持 datetime 8 YYYY-MM-DD HH:MM:SS 日期和時間混合值 不支持 timestamp 4 YYYYMMDD HHMMSS 混合日期和時間,可作時間戳 支持
日期類型的 default 設置
關於 default 設置,通常情況下會使用當前時間作為默認值。
Example:
ts_time timestamp NOT NULL DEFAULT NOW();
- 1
or
ts_time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP();
- 1
根據上表可知,除了 timestamp 類型支持系統默認值設置,其他類型都不支持。
如果建表語句中有:
ts_time1 time NOT NULL DEFAULT NOW();
ts_time3 yearNOT NULL DEFAULT NOW();
ts_time2 date NOT NULL DEFAULT CURRENT_TIMESTAMP();
ts_time2 datetime NOT NULL DEFAULT CURRENT_TIMESTAMP();
- 1
- 2
- 3
- 4
都會報錯。所以想要設置某個日期列的默認值為當前時間,只能使用 timestamp 類型,並設置 DEFAULT NOW() 或 DEFAULT CURRENT_TIMESTAMP() 作為默認值。
date 類型默認值使用 current_date() 創建失敗
date 類型默認值使用 now() 創建失敗
date 類型默認值使用 current_timestamp() 創建失敗
datetime 類型默認值使用 current_timestamp() 創建失敗
datetime 類型默認值使用 now() 創建失敗
timestamp 類型默認值使用 now() 創建成功
常見的日期獲取函數
MySQL中有一些日期函數可供我們使用,我們可以使用 ” select 函數名() ; ” 的 sql 查看它們的返回值。同時也可以使用 “select 自定義函數名();”,調用我們自己定義的函數。
Eample:
select current_timestamp();
- 1

select current_date();
- 1

select current_time();
- 1

select now();
- 1

參照“w3School相關內容”,其他常見的日期函數如下
函數 描述 NOW() 返回當前的日期和時間 CURDATE() 返回當前的日期 CURTIME() 返回當前的時間 DATE() 提取日期或日期/時間表達式的日期部分 EXTRACT() 返回日期/時間按的單獨部分 DATE_ADD() 給日期添加指定的時間間隔 DATE_SUB() 從日期減去指定的時間間隔 DATEDIFF() 返回兩個日期之間的天數 DATE_FORMAT() 用不同的格式顯示日期/時間
其他的內容
更多的MySQL Date 類型或 Date 處理函數,請移步:
MySQL 數據類型 – 菜鳥教程網
SQL Date 函數 – W3School
MySQL日期時間函數大全 – zeroone






