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();
  • 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 創建失敗

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();
  • 1

MySQL當前時間戳

select current_date();
  • 1

MySQL當前日期

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM