1. 程式人生 > >sql:mysql:日期型別及預設設定

sql:mysql:日期型別及預設設定

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 建立失敗

date 型別預設值使用 now() 建立失敗

date 建立失敗2

date 型別預設值使用 current_timestamp() 建立失敗

date 建立失敗3

datetime 型別預設值使用 current_timestamp() 建立失敗

datetime 建立失敗1

datetime 型別預設值使用 now() 建立失敗

datetime 建立失敗2

timestamp 型別預設值使用 now() 建立成功

timestamp

常見的日期獲取函式

MySQL中有一些日期函式可供我們使用,我們可以使用 ” select 函式名() ; ” 的 sql 檢視它們的返回值。同時也可以使用 “select 自定義函式名();”,呼叫我們自己定義的函式。 
Eample:

select current_timestamp();
  •  

MySQL當前時間戳

select current_date();
  •  

MySQL當前日期

select current_time();
  •  

當前時間

select now();
  •  

獲取當前時間

參照“w3School相關內容”,其他常見的日期函式如下

函式 描述
NOW() 返回當前的日期和時間
CURDATE() 返回當前的日期
CURTIME() 返回當前的時間
DATE() 提取日期或日期/時間表達式的日期部分
EXTRACT() 返回日期/時間按的單獨部分
DATE_ADD() 給日期新增指定的時間間隔
DATE_SUB() 從日期減去指定的時間間隔
DATEDIFF() 返回兩個日期之間的天數
DATE_FORMAT() 用不同的格式顯示日期/時間

原文參考:https://www.cnblogs.com/caicaizi/p/7813518.html