MySQL(5.6) 函数
字符串函数
ASCII(str)
说明:返回字符串 str 最左边字符的 ASCII 值
mysql> SELECT ASCII('');
-> 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) 数字
mysql> SELECT BIN(10);
-> ''
mysql> SELECT BIN(NULL);
-> NULL
OCT(N)
说明:返回数值 N 的八进制字符串表示,在此 N 是一个长整数 (BIGINT) 数字
mysql> SELECT OCT(10);
-> 12
HEX(N)
说明:返回数值 N 的十六进制字符串表示,在此 N 是一个长整数 (BIGINT) 数字
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 的比特数
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 的字节数
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('', '', '', '', '');
-> '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, '', '', '', 10);
-> ''
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);
-> ''
mysql> SELECT CONV(12, 8, 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();
-> ''
SLEEP(duration)
说明:休眠 duration 秒
MySQL(5.6) 函数的更多相关文章
- Mysql - 存储过程/自定义函数
在数据库操作中, 尤其是碰到一些复杂一些的系统, 不可避免的, 会用到函数/自定义函数, 或者存储过程. 实际项目中, 自定义函数和存储过程是越少越好, 因为这个东西多了, 也是一个非常难以维护的地方 ...
- MySQL 存储过程和函数
概述 一提到存储过程可能就会引出另一个话题就是存储过程的优缺点,这里也不做讨论,一般别人问我我就这样回答你觉得它好你就用它.因为mysql中存储过程和函数的语法非常接近所以就放在一起,主要区别就是函数 ...
- mysql内置函数大全
mysql 字符串函数用法集合 ASCII(str)返回字符串str的最左面字符的ASCII代码值. mysql> select ascii('d'); +------------+ | asc ...
- mysql中now()函数的使用,还有oracle的sysdate,可能埋下的坑
mysql中now()函数的使用,还有oracle的sysdate 在需求中如果系统中药添加当前操作的时间那么很简单的一个操作在写sql的时候直接在这个字段对应的位置写上now()函数就可以了,这样就 ...
- MySQL字符串连接函数
一.CONCAT(str1,str2,…) 返回结果为连接参数产生的字符串.如有任何一个参数为NULL ,则返回值为 NULL. select concat(s_id, "--", ...
- mysql中find_in_set()函数的使用
首先举个例子来说: 有个文章表里面有个type字段,它存储的是文章类型,有 1头条.2推荐.3热点.4图文等等 .现在有篇文章他既是头条,又是热点,还是图文,type中以 1,3,4 的格式存储.那我 ...
- MySQL中concat函数(连接字符串)
MySQL中concat函数使用方法:CONCAT(str1,str2,…) 返回结果为连接参数产生的字符串.如有任何一个参数为NULL ,则返回值为 NULL. 注意:如果所有参数均为非二进制字符串 ...
- MySQL:日期函数、时间函数总结
MySQL 获得当前日期时间 函数 获得当前日期+时间(date + time)函数:now() mysql> select now(); +---------------------+ | n ...
- MySQL日期时间函数大全(转)
MySQL日期时间函数大全 DAYOFWEEK(date) 返回日期date是星期几(1=星期天,2=星期一,……7=星期六,ODBC标准)mysql> select DAYOFWEEK('1 ...
- Mysql中的函数
什么是函数 mysql中的函数与存储过程类似,都是一组SQL集: 与存储过程的区别 函数可以return值,存储过程不能直接return,但是有输出参数可以输出多个返回值: 函数可以嵌入到sql语句中 ...
随机推荐
- JAVASCRIPT中RegExp.$1是什么意思
RegExp 是javascript中的一个内置对象.为正则表达式. RegExp.$1是RegExp的一个属性,指的是与正则表达式匹配的第一个 子匹配(以括号为标志)字符串,以此类推,RegExp. ...
- .net文件压缩和解压及中文文件夹名称乱码问题
/**************************注释区域内为引用http://www.cnblogs.com/zhaozhan/archive/2012/05/28/2520701.html的博 ...
- 从零开始学习jQuery (八) 插播:jQuery实施方案
一.摘要 本系列文章将带您进入jQuery的精彩世界, 其中有很多作者具体的使用经验和解决方案, 即使你会使用jQuery也能在阅读中发现些许秘籍. 本篇文章属于临时插播, 用于介绍我在本公司的j ...
- nginx+ffmpeg搭建rtmp转播rtsp流的flash服务器
本文概要: nginx是非常优秀的开源服务器,用它来做hls或者rtmp流媒体服务器是非常不错的选择.本文介绍了一种简易方法快速搭建rtmp流媒体服务器,也叫rtsp转播,数据源不是读取文件,而是采用 ...
- 用excel打造报表查询系统
网络数据库以及ERP在中小型企业中日益风行,虽然ERP功能强大,但有的ERP报表系统中规范的报表较少,主要提供二次开发接口或通过如CRYSTALREPORT等其他报表工具进行管理,其实我们可以使用Ex ...
- C# 线程更新UI
最方便的用法: private void ViewMsg(string msg) { /* control.Invoke(new SetControlTextDelegate((ct, ...
- Jmeter初步使用三--使用jmeter自身录制脚本
今日,小编在网上看到很多人使用badboy来录制,然后再把jmx脚本弄到Jmeter上做性能测试.这种方法在小编刚用Jmeter时也曾经用过,但是感觉太麻烦了,所以就找了下其它资料.结果,小编偶然发现 ...
- (3)I2C总线的字节格式,时钟同步和仲裁
字节格式 发送到SDA线上的每个字节必须是8位.每次传输的字节数量是不受限制的.每个字节后必须跟着一个ACK应答位.数据从最高有效位(MSB)开始传输.如果从机要执行一些功能后才能接收或者发送新的完整 ...
- shell 加法
shell 加法 i=$i+1 是在i的变量值后加上字符串'+1' 总结:其他语言中的$i++操作在shell中表示如下:#!/bin/bash n=1;echo -n "$n " ...
- Git 远程分支的查看及相关问题
命令:git ls-remote -t 或者 git ls-remote --tag 运行结果如下: 0975ebc0f9a6b42ecbe066a50a26a678a0753b4d refs/tag ...