MySQL(5.6) 函數

字符串函數

ASCII(str)

說明:返回字符串 str 最左邊字符的 ASCII 值mysql

mysql> SELECT ASCII('2');
    -> 50
mysql> SELECT ASCII(2);
    -> 50
mysql> SELECT ASCII('a');
    -> 97
mysql> SELECT ASCII('');
    -> 0
mysql> SELECT ASCII(NULL);
    -> NULL

 

BIN(N)

說明:返回數值 N 的二進制字符串表示,在此 N 是一個長整數 (BIGINT) 數字sql

mysql> SELECT BIN(10);
    -> '1010'
mysql> SELECT BIN(NULL);
    -> NULL

 

OCT(N)

說明:返回數值 N 的八進制字符串表示,在此 N 是一個長整數 (BIGINT) 數字數據庫

mysql> SELECT OCT(10);
    -> 12

 

HEX(N)

說明:返回數值 N 的十六進制字符串表示,在此 N 是一個長整數 (BIGINT) 數字express

mysql> SELECT HEX(256);
    -> 100

 

HEX(str)

說明:返回字符串 str 每一個字符對應的十六進制 ASCII 值服務器

mysql> SELECT HEX('MySQL');
    -> '4D7953514C'

 

UNHEX(str)

說明:HEX(str) 的逆過程函數

mysql> SELECT UNHEX('4D7953514C');
    -> 'MySQL'

 

BIT_LENGTH(str)

說明:返回字符串 str 的比特數this

mysql> SELECT BIT_LENGTH('MySQL');
    -> 40
mysql> SELECT BIT_LENGTH(NULL);
    -> NULL

 

CHAR_LENGTH(str)

說明:返回字符串的字符數編碼

mysql> SELECT CHAR_LENGTH('MySQL');
    -> 5
mysql> SELECT CHAR_LENGTH('中文');
    -> 2
mysql> SELECT CHAR_LENGTH(NULL);
    -> NULL

 

CHARACTER_LENGTH(str)

說明:與 CHAR_LENGTH(str) 同義加密

 

LENGTH(str)

說明:返回字符串 str 的字節數spa

mysql> SELECT LENGTH('MySQL');
    -> 5
mysql> SELECT LENGTH('中文');
    -> 6

 

OCTET_LENGTH(str)

說明:與 LENGTH(str) 同義

 

CHAR(N, ... [USING charset_name])

說明:將參數解釋爲整數,返回這些整數對應的 ASCII 字符組成的字符串

mysql> SELECT CHAR(77, 121, 83, 81, 76);
    -> 'MySQL'
mysql>  SELECT CHAR(77.0, 121.1, 83.2, 81.3, 76.4);
    -> 'MySQL'
mysql>  SELECT CHAR('77', '121', '83', '81', '76');
    -> 'MySQL'
mysql> SELECT CHAR(NULL);
    -> NULL

 

CONCAT(str1, str2, ...)

說明:返回字符串列表拼接成的字符串

mysql> SELECT CONCAT('My', 'SQL');
    -> 'MySQL'
mysql> SELECT CONCAT('My', NULL, 'MySQL');
    -> 
mysql> SELECT CONCAT('My', 'SQL', 5.6);
    -> 'MySQL5.6'

 

CONCAT_WS(separator, str1, str2, ...)

說明:用分隔符 separator 拼接字符串

mysql> SELECT CONCAT_WS(' ', 'Hello', 'World');
    -> 'Hello World'
mysql> SELECT CONCAT_WS(',', 'Hello', '' ,'World');
    -> 'Hello,,World'
mysql> SELECT CONCAT_WS(',', 'Hello', NULL ,'World');
    -> 'Hello,World'
mysql> SELECT CONCAT_WS(NULL, 'Hello', 'World');
    -> NULL

 

ELT(N, str1, str2, str3, ...)

說明:返回字符串列表的第 N 個元素

mysql> SELECT ELT(1, 'str1', 'str2', 'str3');
    -> 'str1'
mysql> SELECT ELT(0, 'str1', 'str2', 'str3');
    -> NULL
mysql> SELECT ELT(4, 'str1', 'str2', 'str3');
    -> NULL

 

EXPORT_SET(bits, on, off[, separator[, number_of_bits]])

說明:返回一個字符串,對 bits 值的置一的比特位獲得字符串 on,對清零的比特位獲得字符串 off,bits 中的比特值按照從右到左的順序接受檢驗。字符串由分隔符 separator(默認值爲 ',')隔開,字符串長度爲 number_of_bits(默認值爲 64)

mysql> SELECT EXPORT_SET(6, '1', '0', '', 10);
     -> '0110000000'

 

FIELD(str, str1, str2, str3, ...)

說明:返回字符串 str 在字符串列表中的位置

mysql> SELECT FIELD('str', 'str1', 'str2', 'str3');
    -> 0
mysql> SELECT FIELD('str2', 'str1', 'str2', 'str3');
    -> 2

 

FIND_IN_SET(str, strlist)

說明:返回字符串 str 在字符串列表 strlist 中的位置,其中 strlist 的元素是由 ',' 隔開

mysql> FIND_IN_SET('str', 'str1,str2,str3');
    -> 0
mysql> FIND_IN_SET('str2', 'str1,str2,str3');
    -> 2

 

FORMAT(X, D[, locale])

說明:將數值 X 置爲 '#,###,###.##' 的格式,四捨五入保留 D 位小數,locale 表示地區(默認值爲 'en_US')

mysql> SELECT FORMAT(12345.6789, 2);
    -> '12,345.68'
mysql> SELECT FORMAT(12345.6789, 2, 'de_DE');
    -> '12.345,68

 

TO_BASE64(str)

說明:對字符串 str 進行 BASE64 編碼

mysql> SELECT TO_BASE64('MySQL');
    -> 'TXlTUUw='

 

FROM_BASE64(str)

說明:對字符串 str 進行 BASE64 解碼

mysql> SELECT FROM_BASE64('TXlTUUw=');
    -> 'MySQL'

 

INSERT(str, pos, len, newstr)

說明:將字符串 str 從位置 pos 開始的 len 個字符替換成新字符串 newstr

mysql> SELECT INSERT('basketball', 4, 3, 'e');
    -> 'baseball'
mysql> SELECT INSERT('MySQL', 3, 100, 'Eclipse');
    -> 'MyEclipse'
mysql> SELECT INSERT('MySQL', 0, 2, 'MS');
    -> 'MySQL'

 

INSTR(str, substr)

說明:返回字串 substr 在字符串 str 中第一次出現的位置

mysql> SELECT INSTR('MySQL', 'SQL');
    -> 3
mysql> SELECT INSTR('Oracle', 'sql');
    -> 0

 

LOWER(str)

說明:根據最新的字符映射集(默認是 latin1)將字符串轉換爲小寫字母

mysql> SELECT LOWER('MySQL');
    -> 'mysql'

 

LCASE(str)

說明:與 LOWER(str) 同義

 

UPPER(str)

說明:根據最新的字符映射集(默認是 latin1)將字符串轉換爲大寫字母

mysql> SELECT UPPER('MySQL');
    -> 'mysql'

 

UCASE(str)

說明:與 UPPER(str) 同義

 

LEFT(str, len)

說明:返回字符串 str 最左的 len 個字符

mysql> SELECT LEFT('MySQL', 2);
    -> 'My'

 

RIGHT(str, len)

說明:返回字符串 str 最右的 len 個字符

mysql> SELECT RIGHT('MySQL', 3);
    -> 'SQL'

 

LOAD_FILE(file_name)

說明:返回從文件 file_name 讀取的內容。該文件必須存在於服務器上,指定完整的路徑名,還要擁有文件的權限,而且文件的內容是可讀的,內容長度小於 max_allowed_packet

mysql> SELECT LOAD_FILE('D:\\tmp.txt');

 

LOCATE(substr, str)

說明:返回字串 substr 在字符串 str 中第一次出現的位置

mysql> SELECT LOCATE('SQL' , 'MySQL');
    -> 3
mysql> SELECT LOCATE('SQL' , 'Oracle');
    -> 0

 

LOCATE(substr, str, pos)

說明:返回字串 substr 在字符串 str 中第 pos 個字符後第一次出現的位置

mysql> SELECT LOCATE('SQL' , 'MySQL', 1);
    -> 3
mysql> SELECT LOCATE('SQL' , 'MySQL', 4);
    -> 0

 

POSITION(substr IN str)

說明:與 LOCATE(substr, str) 同義

 

LPAD(str, len, padstr)

說明:往字符串 str 左邊填充字符串 padstr 至長度爲 len

mysql> SELECT LPAD('MySQL', 10, '*');
     -> '*****MySQL'
mysql> SELECT LPAD('MySQL', 2, '*');
     -> 'My'

 

RPAD(str, len, padstr)

說明:往字符串 str 右邊填充字符串 padstr 至長度爲 len

mysql> SELECT RPAD('MySQL', 10, '*');
    -> 'MySQL*****'
mysql> SELECT RPAD('MySQL', 2, '*');
    -> 'My'

 

LTRIM(str)

說明:移除字符串左邊的空白字符

mysql> SELECT LTRIM('   MySQL   ');
    -> 'MySQL   '

 

RTRIM(str)

說明:移除字符串右邊的空白字符

mysql> SELECT RTRIM('   MySQL   ');
    -> '   MySQL'

 

TRIM([remstr FROM] str) or TRIM([{BOTH | LEADING | TRAILING} [remstr] FROM] str)

說明:移除字符串 str 指定的前綴和/或後綴(默認值是空格字符)

mysql> SELECT TRIM('   MySQL   ');
    -> 'MySQL'
mysql> SELECT TRIM('*' FROM '***MySQL***');
    -> 'MySQL'
mysql> SELECT TRIM(BOTH '*' FROM '***MySQL***');
    -> 'MySQL'
mysql> SELECT TRIM(LEADING '*' FROM '***MySQL***');
    -> 'MySQL***'
mysql> SELECT TRIM(TRAILING '*' FROM '***MySQL***');
    -> '***MySQL'

 

MAKE_SET(bits, str1, str2, ...)

說明:返回一個設定值 (一個包含被 ‘,’ 分開的字符串),由在bits組中具備相應的比特的字符串組成。str1 對應比特 0,str2 對應比特 1,以此類推。str1,str2,... 中的 NULL 值不會被添加到結果中。  

mysql> SELECT MAKE_SET(1, 'str1', 'str2', 'str3', 'str4');
    -> 'str1'
mysql> SELECT MAKE_SET(3, 'str1', 'str2', 'str3', 'str4');
    -> 'str1,str4'
mysql> SELECT MAKE_SET(1 | 4, 'str1', 'str2', 'str3', 'str4');
    -> 'str1,str3'
mysql> SELECT MAKE_SET(1 | 4, 'str1', 'str2', NULL, 'str4');
    -> 'str1'

 

ORD(str)

說明:若是字符串最左邊的字符是個多字節字符,則返回該字符的代碼,代碼計算公式爲:(1st byte code)+(2nd byte code * 256)+(3rd byte code * 2562...;若是該字符不是個多字節字符,則返回與 ASCII(str) 相同的返回值 

mysql> SELECT ORD('a');
    -> 97
mysql> SELECT ORD('')
    -> 15172523

 

QUOTE(str)

說明:引證一個字符串,由此產生一個在 SQL 語句中可用做徹底轉義數據值的結果。返回的字符串由單引號標註,每例都帶有單引號(‘'’)、反斜線符號(‘\’)、 ASCII NUL以及前面有反斜線符號的 Control-Z。若是自變量的值爲 NULL, 則返回不帶單引號的單詞 「NULL」 。

mysql> SELECT QUOTE('I\'m');
    -> ''I\'m''
mysql> SELECT QUOTE('MySQL');
    -> ''MySQL''
mysql> SELECT QUOTE(NULL)
    -> 'NULL'

 

REPEAT(str, count) 

說明:返回由字符串 str 重複 count 次組成的字符串

mysql> SELECT REPEAT('MySQL', 3);
    -> 'MySQLMySQLMySQL'
mysql> SELECT REPEAT('MySQL', 0);
    -> ''

 

REPLACE(str, from_str, to_str)

說明:將字符串 str 中的子串 from_str 替換成字符串 to_str

mysql> SELECT REPLACE('abc123abc', 'abc', 'xyz');
    -> 'xyz123xyz'

 

REVERSE(str)

說明:返回與字符串 str 相反順序的字符串

mysql> SELECT REVERSE('MySQL')
    -> 'LQSyM'

 

SPACE(N)

說明:返回由N個空格符組成的字符串

mysql> SELECT SPACE(3);
    -> '   '

 

SUBSTR(str, pos)

說明:返回字符串 str 從 pos 位置開始後的子串

mysql> SELECT SUBSTR('abcdefg', 3);
    -> 'cdefg'
mysql> SELECT SUBSTR('abcdefg', -3);
    -> 'efg'
mysql> SELECT SUBSTR('abcdefg', 0);
    -> ''
mysql> SELECT SUBSTR('abcdefg', 10);
    -> ''

 

SUBSTR(str FROM pos)

說明:與 SUBSTR(str, pos) 同義

 

SUBSTR(str, pos, len)

說明:返回字符串 str 從 pos 位置開始,長度爲 len 的子串

mysql>SELECT SUBSTR('abcdefg', 3, 4);
    -> 'cdef'
mysql> SELECT SUBSTR('abcdefg', 0, 4);
    -> ''
mysql> SELECT SUBSTR('abcdefg', -4, 3);
    -> 'def'
mysql> SELECT SUBSTR('abcdefg', 3, 10);
    -> 'cdefg'

 

SUBSTR(str FROM pos FOR len)

說明:與 SUBSTR(str, pos, len) 同義

 

SUBSTRING(str, pos)

說明:與 SUBSTR(str, pos) 同義

 

SUBSTRING(str FROM pos)

說明:與 SUBSTR(str FROM pos) 同義

 

SUBSTRING(str, pos, len)

說明:SUBSTR(str, pos, len) 同義

 

SUBSTRING(str FROM pos FOR len)

說明:與 SUBSTR(str FROM pos FOR len) 同義

 

MID(str, pos, len)

說明:與 SUBSTR(str, pos, len) 同義

 

SUBSTRING_INDEX(str, delim, count)

說明:count 大於 0 時返回字符串 str 從左數第 count 個定界符 delim 左邊的子串,count 小於 0 時返回字符串 str 從右數第 count 個定界符 delim 右邊的子串

mysql> SELECT SUBSTRING_INDEX('str1.str2.str3.str4', '.', 2);
    -> 'str1.str2'
mysql> SELECT SUBSTRING_INDEX('str1.str2.str3.str4', '.', -2);
    -> 'str3.str4'
mysql> SELECT SUBSTRING_INDEX('str1.str2.str3.str4', '.', 0);
    -> ''
mysql> SELECT SUBSTRING_INDEX('str1str2str3str4', '.', 2);
    -> 'str1str2str3str4'

 

STRCMP(expr1, expr2)

說明:返回字符串的比較結果

mysql> SELECT STRCMP('abc', 'cba');
    -> -1
mysql> SELECT STRCMP('cba', 'abc');
    -> 1
mysql> SELECT STRCMP('abc', 'abc');
    -> 0
mysql> SELECT STRCMP('abc', NULL);
    -> NULL

 

數值函數

PI()

說明:返回 π 值

mysql> SELECT PI();
    -> 3.141593

 

SIN(X)

說明:返回 X 的正弦值

mysql> SELECT SIN(PI() / 2);
    -> 1

 

ASIN(X) 

說明:返回 X 的反正弦值,X 不在 -1 和 1 之間則返回 NULL

mysql> SELECT ASIN(0);
    -> 0
mysql> SELECT ASIN(1.01);
    -> NULL

 

COS(X)

說明:返回 X 的餘弦值

mysql> SELECT COS(PI());
    -> -1

 

ACOS(X)

說明:返回 X 的反餘弦值,X 不在 -1 和 1 之間則返回 NULL

mysql> SELECT ACOS(1);
    -> 0
mysql> SELECT ACOS(1.01);
    -> NULL

 

ATAN(X)

說明:返回 X 的反正切值

mysql> SELECT ATAN(1);
    -> 0.7853981633974483
mysql> SELECT ATAN(-1);
    -> -0.7853981633974483

 

ATAN(Y,X) or ATAN2(Y,X)

說明:返回兩個變量 Y 和 X 的反正切值,其值至關於 ATAB(Y/N)

mysql> SELECT ATAN(6 / 3);
    -> 1.1071487177940904
mysql> SELECT ATAN(6, 3);
    -> 1.1071487177940904
mysql> SELECT ATAN2(6, 3);
    -> 1.1071487177940904

 

TAN(X)

說明:返回 X 的正切值

mysql> SELECT TAN(1);
    -> 1.5574077246549023
mysql> SELECT TAN(0);
    -> 0

 

COT(X) 

說明:返回 X 的餘切值

mysql> SELECT COT(1);
    -> 0.6420926159343306

 

DEGREES(X)

說明:將 X 由弧度轉換爲度

mysql> SELECT DEGREES(PI());
    -> 180

 

RADIANS(X)

說明:將 X 由讀轉換爲弧度 

mysql> SELECT RADIANS(180);
    -> 3.141592653589793

 

ABS(X)

說明:返回 X 的絕對值 

mysql> SELECT ABS(1);
    -> 1
mysql> SELECT ABS(-1);
    -> 1

 

CEIL(X)

說明:返回不小於 X 的最小整數值

mysql> SELECT CEIL(1.2);
    -> 2
mysql> SELECT CEIL(1.0);
    -> 1

 

CEILING(X)

說明:與 CEIL(X) 同義

 

FLOOR(X)

說明:返回不大於 X 的最小整數值

mysql> SELECT FLOOR(1.2);
    -> 1
mysql> SELECT FLOOR(-1.2);
    -> -2

 

CONV(N, from_base, to_base)

說明:將 N 由 from_base 進製表示轉換爲 to_base 進製表示

mysql> SELECT CONV('F', 16, 2);
    -> '1111'
mysql> SELECT CONV(12, 8, 10);
    -> '10'

 

CRC32(expr)

說明:返回表達式 expr 的 32 位循環冗餘校驗值

mysql> SELECT CRC32('MySQL');
    -> 3259397556

 

EXP(X)

說明:返回天然底數 e 的 X 次方值

mysql> SELECT EXP(1);
    -> 2.718281828459045

 

LN(X)

說明:返回 X 的天然對數

mysql> SELECT LN(EXP(2));
    -> 2

 

LOG(X)

說明:與 LN(X) 同義

 

LOG(B, X)

說明:返回以 B 爲底的 X 的對數

mysql> SELECT LOG(2, 4);
    -> 2

 

LOG2(X)

說明:返回以 2 爲底的 X 的對數

 

LOG10(X)

說明:返回以 10 爲底的 X 的對數

mysql> SELECT LOG10(100);
    -> 2

 

MOD(N, M) or N MOD M or N % M

說明:返回 N 除以 M 的餘數

mysql> SELECT MOD(10, 3)
    -> 1
mysql> SELECT MOD(10.1, 3);
    -> 1.1

 

POW(X, Y)

說明:返回 X 的 Y 次方 

mysql> SELECT POW(2, 10);
    -> 1024

 

POWER(X, Y) 

說明:與 POW(X,Y) 同義

 

RAND()

說明:返回 0 到 1 的隨機數

mysql> SELECT RAND();
    -> 0.23654564771479522
mysql> SELECT RAND();
    -> 0.7700120906997585

 

RAND(N)

說明:返回 0 到 1 的隨機數,種子值指定爲 N

mysql> SELECT RAND(1);
    -> 0.40540353712197724
mysql> SELECT RAND(1);
    -> 0.40540353712197724
mysql> SELECT RAND(2);
    -> 0.6555866465490187

注:返回 a 到 b 之間的隨機數:FLOOR(a + RAND() * (b – a + 1))

例如,返回 10 到 15 之間的隨機數:

mysql> SELECT FLOOR(10 + (RAND() * 6));

 

ROUND(X)

說明:返回 X 四捨五入後的整數值

mysql> SELECT ROUND(10.25);
    -> 10
mysql> SELECT ROUND(10.50);
    -> 11
mysql> SELECT ROUND(10.75);
    -> 11

 

ROUND(X, D)

說明:返回 X 四捨五入後保留 D 位小數的值

mysql> SELECT ROUND(10.002, 2);
    -> 10
mysql> SELECT ROUND(10.007, 2);
    -> 10.01
mysql> SELECT ROUND(10.005, 2);
    -> 10.01

 

SIGN(X)

說明:X>0 則返回 1,X<0 則返回 -1,X=0 則返回 0

mysql> SELECT SIGN(10);
    -> 1
mysql> SELECT SIGN(-10);
    -> -1
mysql> SELECT SIGN(0);
    -> 0

 

SQRT(X)

說明:返回非負數 X 的二次方根

mysql> SELECT SQRT(4);
    -> 2
mysql> SELECT SQRT(-1);
    -> NULL

 

TRUNCATE(X, D)

說明:返回被捨去至小數點後 D 位的數字 X。若 D 的值爲 0,則結果不帶有小數點或不帶有小數部分。能夠將 D 設爲負數,則截去(歸零)X 小數點左起第 D 位開始後面全部低位的值。

mysql> SELECT TRUNCATE(123.456, 2);
    -> 123.45
mysql> SELECT TRUNCATE(123.456, 0);
    -> 123
mysql> SELECT TRUNCATE(123.456, -2);
    -> 100

 

日期和時間函數

ADDDATE(expr, days)

說明:向日期加上指定的天數

mysql> SELECT ADDDATE('2014-10-01', 7);
    -> '2014-10-08'

 

ADDDATE(date, INTERVAL expr unit)

說明:向日期加上指定的時間間隔

mysql> SELECT ADDDATE('2014-10-01', INTERVAL 31 DAY);
    -> '2014-11-01'
mysql> SELECT ADDDATE('2014-10-01', INTERVAL 6 MONTH);
    -> '2015-04-01'
mysql> SELECT ADDDATE('2014-10-01', INTERVAL 2 QUARTER);
    -> '2015-04-01'
mysql> SELECT ADDDATE('2014-10-01', INTERVAL -1 YEAR);
    -> '2013-10-01'

 

DATE_ADD(date,INTERVAL expr unit)

說明:與 ADDDATE(date, INTERVAL expr unit) 同義 

SUBDATE(expr, days)

說明:向日期減去指定的天數 

mysql> SELECT SUBDATE('2014-10-01', INTERVAL 1 QUARTER);
    -> '2014-07-01'

 

SUBDATE(date, INTERVAL expr unit)

說明:向日期減去指定的時間間隔

mysql> SELECT SUBDATE('2014-10-01', INTERVAL 1 QUARTER);
    -> '2014-07-01'

 

DATE_SUB(date, INTERVAL expr unit)

說明:與SUBDATE(date, INTERVAL expr unit)同義

 

ADDTIME(expr1, expr2)

說明:返回日期時間表達式 expr1 加上日期時間表達式 expr2 後的結果

mysql> SELECT ADDTIME("2014-10-01 00:00:00", "02:30:00");
    -> '2014-10-01 02:30:00'
mysql> SELECT ADDTIME("2014-10-01 00:00:00", "01 02:30:00");
    -> '2014-10-02 02:30:00'

 

SUBTIME(expr1, expr2)

說明:返回日期時間表達式 expr1 減去日期時間表達式 expr2 後的結果

mysql> SELECT SUBTIME("2014-10-01 00:00:00", "02:30:00");
    -> '2014-09-30 21:30:00'
mysql> SELECT SUBTIME("2014-10-01 00:00:00", "01 02:30:00");
    -> '2014-09-29 21:30:00'

 

CONVERT_TZ(dt, from_tz, to_tz)

說明:返回將日期時間 dt 從時區 from_tz 轉成時區 to_tz 後的結果

mysql> SELECT CONVERT_TZ('2014-10-01 08:00:00', '+08:00', '+9:00');
    -> '2014-10-01 09:00:00'

 

CURDATE()

說明:返回當前日期

mysql> SELECT CURDATE();
    -> '2014-10-26'

 

CURRENT_DATE()

說明:與 CURDATE() 同義

 

CURTIME() 

說明:返回當前時間 

mysql> SELECT CURTIME();
    -> '21:02:42'

 

CURRENT_TIME()

說明:與 CURTIME() 同義

 

NOW()

說明:返回當前日期時間

mysql> SELECT NOW();
    -> '2014-10-26 21:03:06'

 

LOCALTIME()

說明:與 NOW() 同義

 

LOCALTIMESTAMP()

說明:與 NOW() 同義

 

SYSDATE()

說明:返回當前的系統日期時間

mysql> SELECT SYSDATE();
    -> '2014-10-26 21:03:06'

 

DATE(expr)

說明:提取表達式 expr 的日期部分

mysql> SELECT DATE('2014-10-01 08:00:00');
    -> '2014-10-01'

 

TIME(expr)

說明:提取表達式 expr 的時間部分

mysql> SELECT TIME('2014-10-01 08:00:00');
    -> '08:00:00'

 

DATEDIFF(expr1, expr2)

說明:返回表達式 expr1 和表達式 expr2 的日期間隔

mysql> SELECT DATEDIFF('2014-10-01 08:00:00', '2014-10-02 08:00:00');
    -> -1
mysql> SELECT DATEDIFF('2014-10-01 23:59:59', '2014-10-02 00:00:00');
    -> -1

 

TIMEDIFF(expr1,expr2)

說明:返回表達式 expr1 和表達式 expr2 的時間間隔 

mysql> SELECT DATEDIFF('2014-10-01 23:59:59', '2014-10-02 00:00:00');
    -> -1

 

DATE_FORMAT(date,format)

說明:格式化日期

 格式符  說明
%a  工做日的縮寫名稱  (Sun..Sat)
%b  月份的縮寫名稱  (Jan..Dec)
%c  月份,數字形式(0..12)
%D  帶有英語後綴的該月日期  (0th, 1st, 2nd, 3rd, ...) 
%d  該月日期,數字形式 (00..31)
%e  該月日期,數字形式(0..31)
%f  微秒 (000000..999999)
%H  小時(00..23)
%h  小時(01..12)
%I  小時 (01..12)
%i  分鐘,數字形式 (00..59)
%j  一年中的天數 (001..366)
%k  小時 (0..23)
%l  小時 (1..12)
%M  月份名稱 (January..December)
%m  月份, 數字形式 (00..12)
%p  上午(AM)或下午( PM)
%r  時間,12 小時制 (hh:mm:ss AM or PM)
%S  秒 (00..59)
%s  秒 (00..59)
%T  時間,24 小時制 (hh:mm:ss)
%U  周 (00..53), 其中週日爲每週的第一天
%u  周 (00..53), 其中週一爲每週的第一天
%V  周 (01..53),其中週日爲每週的第一天;和 %X 同時使用
%v  周 (01..53), 其中週一爲每週的第一天;和 %x 同時使用
%W  工做日名稱 (Sunday..Saturday)
%w  一週中的每日 (0=週日..6=週六)
%X  該周的年份,其中週日爲每週的第一天,數字形式,4 位數;和 %V 同時使用 
%x  該周的年份,其中週一爲每週的第一天, 數字形式,4 位數;和 %v 同時使用
%Y  年份, 數字形式,4 位數
%y  年份, 數字形式,2 位數
%%  % 字符
mysql> SELECT DATE_FORMAT('2014-10-01 08:00:00', '%W %M %Y');
    -> 'Wednesday October 2014'

 

STR_TO_DATE(str,format)

說明:DATE_FORMAT(date, format) 的逆過程,將給定的字符串 str 按 format 格式解析成日期

 

TIME_FORMAT(time, format)

說明:用法與 DATE_FORMAT 同樣,但可能只處理時、分、秒和微秒

mysql> SELECT TIME_FORMAT('16:30:00', '%h:%i %p');
    -> '04:30 PM'

 

DAYOFMONTH(date)

說明:返回該月份的第幾天

mysql> SELECT DAYOFMONTH('2014-10-08');
    -> 8

 

DAYOFYEAR(date)

說明:返回該年的第幾天

mysql> SELECT DAYOFYEAR('2014-12-31');
    -> 365

 

DAYOFWEEK(date)

說明:返回星期對應的索引值(1 表示週日,2 表示週一,…… 7 表示週六)

mysql> SELECT DAYOFWEEK('2014-10-20');
    -> 2

 

WEEKDAY(date)

說明:返回星期對應的索引值(0 表示週一,1 表示週二,…… 6 表示週日)

mysql> SELECT WEEKDAY('2014-10-20');
    -> 0

 

DAYNAME(date)

說明:返回星期的名稱

mysql> SELECT DAYNAME('2014-10-20');
    -> 'Monday'

 

MONTHNAME(date)

說明:返回月份的名稱

mysql> SELECT MONTHNAME('2014-10-08');
    -> 'October'

 

EXTRACT(unit FROM date)

說明:提取日期 date 中的 unit 部分

mysql> SELECT EXTRACT(YEAR FROM '2014-10-08');
    -> 2014
mysql> SELECT EXTRACT(YEAR_MONTH FROM '2014-10-08');
    -> 201410
mysql> SELECT EXTRACT(HOUR_SECOND FROM '2014-10-08 12:30:00');
    -> 123000

 

FROM_UNIXTIME(unix_timestamp) or FROM_UNIXTIME(unix_timestamp, format)

說明:將時間戳 unix_timestamp 格式化成字符串形式,format 同 DATE_FORMAT

mysql> SELECT FROM_UNIXTIME(1414066392)
    -> '2014-10-23 20:13:12'
mysql> SELECT FROM_UNIXTIME(1414066392) + 0
    -> 20141023201312

 

GET_FORMAT({DATE|TIME|DATETIME}, {'EUR'|'USA'|'JIS'|'ISO'|'INTERNAL'})

說明返回:返回一個格式字符串,結果依賴參數的組合:

函數調用 結果
 GET_FORMAT(DATE,'USA')   '%m.%d.%Y'
 GET_FORMAT(DATE,'JIS')  '%Y-%m-%d'
 GET_FORMAT(DATE,'ISO')  '%Y-%m-%d'
 GET_FORMAT(DATE,'EUR')  '%d.%m.%Y'
 GET_FORMAT(DATE,'INTERNAL')   '%Y%m%d'
 GET_FORMAT(DATETIME,'USA')  '%Y-%m-%d-%H.%i.%s' 
 GET_FORMAT(DATETIME,'JIS')  '%Y-%m-%d %H:%i:%s'
 GET_FORMAT(DATETIME,'ISO')  '%Y-%m-%d %H:%i:%s'
 GET_FORMAT(DATETIME,'EUR')  '%Y-%m-%d-%H.%i.%s'
 GET_FORMAT(DATETIME,'INTERNAL')   '%Y%m%d%H%i%s'
 GET_FORMAT(TIME,'USA')  '%h:%i:%s %p'
 GET_FORMAT(TIME,'JIS')  '%H:%i:%s'
 GET_FORMAT(TIME,'ISO')  '%H:%i:%s'
 GET_FORMAT(TIME,'EUR')  '%H.%i.%S'
 GET_FORMAT(TIME,'INTERNAL')  '%H%i%s'
mysql> SELECT GET_FORMAT(DATE, 'EUR');
    -> '%d.%m.%Y'

 

LAST_DAY(date)

說明:返回當月的最後一天

mysql> SELECT LAST_DAY('2014-10-08');
    -> '2014-10-31'

 

YEAR(date)

說明:返回日期對應的年份

mysql> SELECT YEAR('2014-10-08');
    -> 2014

 

QUARTER(date)

說明:返回日期對應的季度

mysql> SELECT QUARTER('2014-10-08');
    -> 4

 

MONTH(date)

說明:返回日期對應的月份

mysql> SELECT MONTH('2014-10-08');
    -> 10

 

WEEK(date[, mode])

說明:返回日期對應的星期數,參數 mode 爲計算規則,描述以下:

 mode   一週的第一天   範圍  Week 1 is the first week …
0 星期日  0-53   with a Sunday in this year
1 星期一  0-53  with 4 or more days this year
2 星期日  1-53  with a Sunday in this year
3 星期一  1-53  with 4 or more days this year
4 星期日  0-53  with 4 or more days this year 
5 星期一  0-53  with a Sunday in this year
6 星期日  1-53  with 4 or more days this year
7 星期一  1-53  with a Sunday in this year
mysql> SELECT WEEK('2014-01-01', 1);
    -> 1

 

DAY(date)

說明:與 DAYOFMONTH(date) 同義

 

HOUR(time)

說明:返回 time 對應的小時數

mysql> SELECT HOUR('12:20:15');
    -> 12

 

MINUTE(time)

說明:返回 time 對應的分鐘數

mysql> SELECT MINUTE('12:20:15');
    -> 20

 

SECOND(time)

說明:返回time對應的秒數

mysql> SELECT SECOND('12:20:15');
    -> 15

 

MICROSECOND(expr)

說明:返回時間表達式 expr 對應的微秒數

mysql> SELECT MICROSECOND('12:00:00.123456');
    -> 123456

 

MAKEDATE(year, dayofyear)

說明:根據給定的年份和天數獲得一個日期

mysql> SELECT MAKEDATE(2014, 32);
    -> '2014-02-01'

 

MAKETIME(hour, minute, second)

說明:根據給定的時分秒獲得一個時間

mysql> SELECT MAKETIME(12,30,0);
    -> '12:30:00'

 

PERIOD_ADD(P, N)

說明:添加 N 個月至週期P(格式爲 YYMM 或 YYYYMM ),返回格式爲 YYYYMM ,注意週期參數不是日期值

mysql> SELECT PERIOD_ADD(201406, 3);
    -> 201409
mysql> SELECT PERIOD_ADD(9801, 36);
    -> 200101

 

PERIOD_DIFF(P1, P2)

說明:返回週期 P1 和 P2 之間的月份數,P1 和 P2 的格式爲 YYMM 或 YYYYMM,注意週期參數不是日期值

mysql> SELECT PERIOD_DIFF(201410, 1310);
    -> 12

 

SEC_TO_TIME(seconds)

說明:將給定的秒數轉換成時分秒格式

mysql> SELECT SEC_TO_TIME(3661);
    -> '01:01:01'
mysql> SELECT SEC_TO_TIME(3661) + 0;
    -> 10101

 

TIME_TO_SEC(time)

說明:將時間 time 轉換爲秒數

mysql> SELECT TIME_TO_SEC('02:00:01');
    -> 7201

 

TIMESTAMP(expr)

說明:返回表達式 expr 的日期時間值

mysql> SELECT TIMESTAMP('2014-10-01');
    -> '2014-10-01 00:00:00'

 

TIMESTAMP(expr1, expr2)

說明:返回將表達式 expr2 添加到表達式 expr1 的結果的日期時間值

mysql> SELECT TIMESTAMP('2014-10-01 12:00:00','12:00:00');
    -> '2014-10-02 00:00:00'

 

TIMESTAMPADD(unit, interval, datetime_expr)

說明:向給定的日期時間值加上指定的時間間隔

mysql> SELECT TIMESTAMPADD(MONTH, 1, '2014-10-01 12:00:00');
    -> '2014-11-01 12:00:00'
mysql> SELECT TIMESTAMPADD(HOUR, -1, '2014-10-01 12:00:00');
    -> '2014-10-01 11:00:00'

 

TIMESTAMPDIFF(unit, datetime_expr1, datetime_expr2)

說明:返回日期時間表達式 datetime_expr1 和 datetime_expr2 的時間間隔,單位由 unit 給定

mysql> SELECT TIMESTAMPDIFF(HOUR, '2014-10-01 12:00:00', '2014-10-01 13:30:00');
    -> 1

 

UNIX_TIMESTAMP()

說明:返回當前時間的 UNIX 時間戳

mysql> SELECT UNIX_TIMESTAMP();
    -> 1414330231

 

UNIX_TIMESTAMP(date)

說明:返回 date 對應的 UNIX 時間戳

mysql> SELECT UNIX_TIMESTAMP('2014-10-01 12:00:00');
    -> 1412136000

 

UTC_DATE()

說明:返回當前的 UTC 日期

mysql> SELECT UTC_DATE();
    -> '2014-10-26'

 

UTC_TIME()

說明:返回當前的UTC時間

mysql> SELECT UTC_TIME();
    -> '13:31:18'

 

UTC_TIMESTAMP()

說明:返回當前的 UTC 日期時間

mysql> SELECT UTC_TIMESTAMP();
    -> '2014-10-26 13:31:18'

 

WEEKOFYEAR(date)

說明:返回日期對應的星期數,至關於 WEEK(date, 3)

mysql> SELECT WEEKOFYEAR('2014-01-01');
    -> 1

 

YEARWEEK(date[, mode])

說明:日期對應的年份和星期數,參數 mode 與 WEEK() 做用相同。

mysql> SELECT YEARWEEK('2014-01-01');
    -> 201352

 

加密和壓縮函數

AES_ENCRYPT(str, key_str) and AES_DECRYPT(crypt_str, key_str)

說明:AES 加密解密函數

mysql> SELECT AES_DECRYPT(AES_ENCRYPT('hello', 'MySQL'), 'MySQL');
    -> 'hello'

 

DES_ENCRYPT(str[, {key_num | key_str}]) and DES_DECRYPT(crypt_str[, key_str])

說明:DES 加密解密函數

mysql> SELECT DES_DECRYPT(DES_ENCRYPT('hello', 'MySQL'), 'MySQL');
    -> 'hello'

 

ENCODE(str, pass_str) and DECODE(crypt_str, pass_str)

說明:以 pass_str 做爲密碼對 str 進行加密解密

mysql> SELECT DECODE(ENCODE('hello', 'MySQL'), 'MySQL');
    -> 'hello'

 

ENCRYPT(str[, salt])

說明:使用 Unix 的 crypt() 系統調用加密,Windows 不支持該函數

mysql> SELECT ENCRYPT('hello');
    -> 'VxuFAJXVARROc'

 

MD5(str)

說明:32 位 MD5 加密

mysql> SELECT MD5('hello');
    -> '5d41402abc4b2a76b9719d911017c592'

 

SHA(str) or SHA1(str)

說明:SHA1 加密

mysql> SELECT SHA1('hello');
    -> 'aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d'

 

SHA2(str, hash_length)

說明:SHA2 加密,hash_length 的值只能是 224, 256, 384, 512 或 0(等同於 256)

mysql> SELECT SHA2('hello', 256);
    -> '2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824'

 

PASSWORD(str)

說明:返回字符串 str 加密後的密文,PASSWORD() 加密是單向不可逆的。

mysql> SELECT PASSWORD('hello');
    -> '*6B4F89A54E2D27ECD7E8DA05B4AB8FD9D1D8B119'

注:PASSWORD() 函數在 MySQL 服務器中的鑑定系統使用;不該將它用在我的的應用程序中。爲達到一樣目的,可以使用 MD5() 或 SHA1() 代替。

 

COMPRESS(string_to_compress)

說明:壓縮字符串 string_to_compress

mysql> SELECT LENGTH(COMPRESS(REPEAT('a', 1000)));
    -> 21
mysql> SELECT LENGTH(COMPRESS('a'));
    -> 13
mysql> SELECT LENGTH(COMPRESS(''));
    -> 0

 

UNCOMPRESS(string_to_uncompress)

說明:將被壓縮的字符串解壓

mysql> SELECT UNCOMPRESS(COMPRESS('hello'));
    -> 'hello'

 

UNCOMPRESSED_LENGTH(compressed_string)

說明:返回被壓縮的字符串 compressed_string 在被壓縮前的長度

mysql> SELECT UNCOMPRESSED_LENGTH(COMPRESS(REPEAT('a', 1000)));
    -> 1000

 

VALIDATE_PASSWORD_STRENGTH(str)

說明:驗證密碼的強度,值的範圍是 0(弱)到 100(強),若是沒有安裝 validate_password 插件值永遠是 0,該函數在 5.6.6 版本新增的。

Password Test Return Value
 Length < 4   0
 Length ≥ 4 and < validate_password_length   25
 Satisfies policy 1  (LOW) 50
 Satisfies policy 2  (MEDIUM) 75 
 Satisfies policy 3  (STRONG) 100 

 

信息函數

CHARSET(str)

說明:返回字符串自變量的字符集

mysql> SELECT CHARSET('數據庫');
    -> 'utf8'

 

COERCIBILITY(str)

說明:返回字符串自變量的整序可壓縮性值。

 Coercibility  Meaning Example
0  Explicit collation  Value with COLLATE clause 
1  No collation  Concatenation of strings with different collations 
2  Implicit collation  Column value, stored routine parameter or local variable 
3  System constant   USER() return value
4  Coercible  Literal string
5  Ignorable  NULL or an expression derived from NULL
mysql> SELECT COERCIBILITY('hello');
    -> 4

 

COLLATION(str)

說明:返回字符串自變量的排序方式 

mysql> SELECT COLLATION('hello')
    -> 'utf8_general_ci'

 

CONNECTION_ID()

說明:返回鏈接的鏈接 ID(線程 ID)

mysql> SELECT CONNECTION_ID();
    -> 13

 

CURRENT_USER()

說明:返回被驗證過的用戶名和主機

mysql> SELECT CURRENT_USER();
    -> 'root@localhost'

 

USER()

說明:返回提供給客戶端的用戶名和主機

mysql> SELECT USER();
    -> 'root@localhost'

 

SESSION_USER()

說明:與 USER() 同義

 

SYSTEM_USER()

說明:與 USER() 同義

 

DATABASE()

說明:返回默認(當前)的數據庫名

mysql> SELECT DATABASE()
    -> 'world'

 

SCHEMA()

說明:與 DATABASE() 同義

 

VERSION()

說明:返回當前 MySQL 服務器的版本

mysql> SELECT VERSION();
    -> '5.6.10'

 

其餘函數

BIT_COUNT(N)

說明:返回數值 N 對應的二進制表示被置一的個數。

mysql> SELECT BIT_COUNT(15);
    -> 4

 

DEFAULT(col_name)

說明:返回字段 col_name 的默認值

 

INET_ATON(expr)

說明:返回 IPv4 地址對應的數值

mysql> SELECT INET_ATON('127.0.0.1');
    -> 2130706433

INET_NTOA(expr)

說明:返回數值對應的 IPv4 地址

mysql> SELECT INET_NTOA(2130706433);
    -> '127.0.0.1'

 

INET6_ATON(expr)

說明:返回 IPv6 地址對應的數值

mysql> SELECT HEX(INET6_ATON('fdfe::5a55:caff:fefa:9089'));
    -> 'FDFE0000000000005A55CAFFFEFA9089'

 

INET6_NTOA(expr)

說明:返回數值對應的 IPv6 地址

mysql> SELECT INET6_NTOA(UNHEX('FDFE0000000000005A55CAFFFEFA9089'));
    -> 'fdfe::5a55:caff:fefa:9089'

 

IS_IPV4(expr)

說明:判斷 expr 是否爲一個 IPv4 地址

mysql> SELECT IS_IPV4('127.0.0.1');
    -> 1
mysql> SELECT IS_IPV4('127.0.0.256');
    -> 0

 

IS_IPV4_COMPAT(expr)

說明:判斷 expr 是否爲一個 IPv4 兼容地址

mysql> SELECT IS_IPV4_COMPAT(INET6_ATON('::135.75.43.52'));
    -> 1

 

IS_IPV4_MAPPED(expr)

說明:判斷 expr 是否爲一個 IPv4 映射地址

mysql> SELECT IS_IPV4_MAPPED(INET6_ATON('::ffff:1.2.3.4'));
    -> 1

 

IS_IPV6(expr)

說明:判斷 expr 是否爲一個 IPv6 地址

mysql> SELECT IS_IPV6('fdfe::5a55:caff:fefa:9089');
    -> 1

 

UUID()

說明:返回通用惟一識別碼

mysql> SELECT UUID();
    -> 'ad238618-6661-11e4-87cf-b01041757ad4'

 

UUID_SHORT()

說明:返回整數值的 UUID

mysql> SELECT UUID_SHORT();
    -> '23742392683200512'

 

SLEEP(duration)

說明:休眠 duration 秒

相關文章
相關標籤/搜索