sql:mysql:日期型別及預設設定
阿新 • • 發佈:2018-12-15
MySQL 日期型別及預設設定 (除timestamp型別外,系統不支援其它時間型別欄位設定預設值)
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();
- or
ts_time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP();
- 根據上表可知,除了 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();
都會報錯。所以想要設定某個日期列的預設值為當前時間,只能使用 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();
select current_date();
select current_time();
select now();
參照“w3School相關內容”,其他常見的日期函式如下
函式 描述 NOW() 返回當前的日期和時間 CURDATE() 返回當前的日期 CURTIME() 返回當前的時間 DATE() 提取日期或日期/時間表達式的日期部分 EXTRACT() 返回日期/時間按的單獨部分 DATE_ADD() 給日期新增指定的時間間隔 DATE_SUB() 從日期減去指定的時間間隔 DATEDIFF() 返回兩個日期之間的天數 DATE_FORMAT() 用不同的格式顯示日期/時間