本文更新於2019-06-29,使用MySQL 5.7,操作系統為Deepin 15.4。 數值函數 函數 作用 ABS(x) 絕對值 CEIL(x) 向上取整 FLOOR(x) 向下取整 MOD(x, y) 取餘,等同x%y RAND() [0, 1)區間的隨機數 ROUND(x[, n]) 四舍 ...
本文更新於2019-06-29,使用MySQL 5.7,操作系統為Deepin 15.4。
目錄
數值函數
函數 | 作用 |
---|---|
ABS(x) | 絕對值 |
CEIL(x) | 向上取整 |
FLOOR(x) | 向下取整 |
MOD(x, y) | 取餘,等同x%y |
RAND() | [0, 1)區間的隨機數 |
ROUND(x[, n]) | 四捨五入至n位小數,n預設為0 |
TRUNCATE(x, n) | 截斷為n位小數 |
日期時間函數
函數 | 作用 |
---|---|
CURDATE() | 當前日期 |
CURTIME() | 當前時間 |
DATE_ADD(t, INTERVAL expr type) | 增加一定時間間隔 |
DATEDIFF(later, previous) | later減previous相差的天數,不考慮時間 |
DATE_FORMAT(t, fmt) | 使用fmt格式化 |
FROM_UNIXTIME(unix) | UNIX時間戳的日期時間 |
HOUR(t) | 小時 |
MINUTE(t) | 分鐘 |
MONTHNAME(t) | 月份名(英文) |
NOW() | 當前日期時間 |
UNIX_TIMESTAMP(t) | 轉換成UNIX時間戳 |
WEEK(t) | 一年中的第幾周 |
YEAR(t) | 年份 |
DATE_ADD(t, INTERVAL expr type)
的type
可用如下的時間間隔類型。expr
使用對應的格式,格式允許不嚴格的間隔(即任何標點符都可)。格式中的數值可使用負數。若整個格式就是一個數值,則可直接使用數值類型的格式,否則應使用字元串類型的格式。
時間間隔類型 | 格式 |
---|---|
YEAR | YY |
MONTH | MM |
DAY | DD |
HOUR | hh |
MINUTE | mm |
SECOND | ss |
YEAR_MONTH | YY-MM |
DAY_HOUR | DD hh |
DAY_MINUTE | DD hh:mm |
DAY_SECOND | DD hh:mm:ss |
HOUR_MINUTE | hh:mm |
HOUR_SECOND | hh:mm:ss |
MINUTE_SECOND | mm:ss |
DATE_FORMAT(t, fmt)
的fmt
參數可使用的格式符如下:
格式符類型 | 格式符 | 說明 |
---|---|---|
秒 | %S/%s | 兩位數字形式的秒(00, ..., 59) |
分 | %i | 兩位數字形式的分(00, ..., 59) |
時 | %H | 兩位數字形式的時,24小時制(00, ..., 23) |
時 | %h/%I | 兩位數字形式的時,12小時制(01, ..., 12) |
時 | %k | 數字形式的時,24小時制(0, ..., 23) |
時 | %l | 數字形式的時,12小時制(1, ..., 12) |
時分秒 | %T | 兩位數字,24小時制的時分秒(hh:mm:ss) |
時分秒 | %r | 兩位數字,12小時制的時分秒(hh:mm:ss AM/PM) |
上下午 | %p | AM或PM |
星期 | %W | 英文星期(Sunday) |
星期 | %a | 英文縮寫星期(Sun) |
星期 | %w | 數字形式的星期(0=Sunday) |
日 | %d | 兩位數字形式的日(01, ..., 31) |
日 | %e | 數字形式的日(1, ..., 31) |
日 | %D | 英文尾碼形式的日(1st) |
月 | %M | 英文月(January) |
月 | %b | 英文縮寫月(Jan) |
月 | %m | 兩位數字形式的月(01, ..., 12) |
月 | %c | 數字形式的月(1, ..., 12) |
年 | %Y | 4位數字形式的年 |
年 | %y | 2位數字形式的年 |
%j | 一年中第幾天,三位數字形式(001, ..., 366) | |
%U | 一年中第幾周,Sunday為周中第一天,第一個Sunday為第一周的開始,兩位數字形式(00, ..., 52) | |
%u | 一年中第幾周,Monday為周中第一天,01-01為第一周的開始,兩位數字形式(00, ..., 52) | |
% | %% | 字元% |
字元串函數
字元串首字元的下標為1。
函數 | 作用 |
---|---|
CONCAT(v[, ...]) | 連接字元串,v也可以是數值 |
INSERT(str, idx, len, substr) | 將str從idx(含)起的len個字元替換為substr |
LEFT(str, len) | 取左側len個字元 |
LENGTH(str) | 字元串長度 |
LOWER(str) | 轉換成小寫 |
LPAD(str, len, pad) | 使用pad在str左側填充至長度為len |
LTRIM(str) | 去掉左側空格 |
REPEAT(str, n) | 重覆n次 |
REPLACE(str, old, new) | 使用new替換old |
RIGHT(str, len) | 取右側len個字元 |
RPAD(str, len, pad) | 使用pad在str右側填充至長度為len |
RTRIM(str) | 去除右側空格 |
STRCMP(str1, str2) | str1<str2返回-1,str1=str2返回0,str1>str2返回1 |
SUBSTRING(str, idx, len) | 截取str從idx(含)起長度為len的子串 |
TRIM(str) | 去掉兩側空格 |
UPPER(str) | 轉換成大寫 |
流程函數
函數 | 作用 |
---|---|
IF(value, t, f) | 如果value為真則返回t,否則返回f |
IFNULL(value, result) | 如果value不為NULL則返回value,否則返回result |
CASE WHEN expr1 THEN result1 [WHEN ...] [ELSE default] END | 根據各表達式的真假返回結果 |
CASE value WHEN enum1 THEN result1 [WHEN ...] [ELSE default] END | value根據各枚舉值返回結果 |
使用流程函數時註意NULL
的情況。
聚合函數
函數 | 作用 |
---|---|
BIT_AND(row) | 按位與 |
BIT_OR(row) | 按位或 |
其他函數
用於資料庫管理的函數:
函數 | 作用 |
---|---|
CURRENT_USER() | 當前用戶 |
DATABASE() | 當前資料庫名,同SCHEMA |
PASSWORD(str) | 加密成系統密碼,長度為41 |
SCHEMA() | 當前資料庫名,同DATABASE |
USER() | 當前登錄用戶名 |
VERSION() | 當前MySQL版本 |
用於輔助查詢的函數:
函數 | 作用 |
---|---|
FOUND_ROWS() | 上一次查詢返回的行數 |
LAST_INSERT_ID() | 最後插入記錄使用的自增長值。如一次插入多條記錄,則返回第一條記錄使用的自增長值 |
用於計算的函數:
函數 | 作用 |
---|---|
BIN(value) | 二進位形式表示 |
CRC32(value) | CRC32值 |
HEX(value) | 十六進位形式表示 |
INET_ATON(ip) | IP從點分十進位轉換成網路位元組序整數 |
INET_NTOA(uint) | IP從網路位元組序整數轉換成點分十進位 |
MD5(value) | MD5值 |
SHA1(value) | SHA1值 |
全局變數
變數 | 作用 |
---|---|
CURRENT_TIMESTAMP | 當前時間戳 |