【数据库】MySQL 函数大全包含示例(涵盖了常用如时间、数字、字符串处理、数据流函数的和一些冷门的)...

ps:博客园markdown不能自动生成列表,更好的阅读体验可访问我的个人博客http://www.isspark.com/archives/mysqlFunctionDesc

数学函数(Mathematical Functions)

函数名描述示例
ABS(X)绝对值SELECT ABS(-2);
-> 0
ACOS(X)反余弦值SELECT ACOS(1);
-> 0
ASIN(X)反正弦值SELECT ASIN(0.2);
-> 0.20135792079033
ATAN(X)反正切值SELECT ATAN(2);
-> 1.1071487177941
ATAN(Y,X), ATAN2(Y,X)反正切值(两个参数),
类似于求Y/X的反正切值
SELECT ATAN(-2,2);
-> -0.78539816339745;
CEIL(X),CEILING(X)求不小于X的最小整数SELECT CEILING(1.23);
-> 2
CONV(N,from_base,
to_base)
将数据N从from_base进制转化
成to_base进制
SELECT CONV(2,10,2);
->10
COS(X)余弦值SELECT COS(PI());
-> -1
COT(X)余切值SELECT COT(12);
-> -1.5726734063977
CRC32(expr)计算循环冗余校验值并
返回一个32位无符号值
SELECT CRC32('MySQL');
-> 3259397556
DEGREES(X)把弧度换算成度SELECT DEGREES(PI());
-> 180
EXP(X)返回e(自然对数的底数)的X次方SELECT EXP(2);
-> 7.3890560989307
FLOOR(X)返回不大于X的最大整数SELECT FLOOR(1.23);
-> 1
FORMAT(X,D)将数字X格式化为D位小数(四舍五入)SELECT FORMAT(1.135,2);
->1.14
HEX(N or S)获取十进制数或字符串的
十六进制表示形式
SELECT HEX(255);
->'FF'
LN(X)返回X的自然对数SELECT LN(2);
-> 0.69314718055995
LOG(X)返回X的自然对数SELECT LOG(2);
-> 0.69314718055995
LOG(B,X)返回X以B为底的对数SELECT LOG(10,100);
-> 2
LOG10(X)返回以10为底的X的对数SELECT LOG10(100);
-> 2
LOG2(X)返回以2为底的X的对数SELECT LOG2(65536);
-> 16
MOD(N,M), N % M, N MOD M返回N除以M的余数SELECT MOD(234, 10);
-> 4
PI()返回πSELECT PI()+
0.000000000000000000;
-> 3.141592653589793116
POW(X,Y),POWER(X,Y)返回X的Y次方SELECT POW(2,2);
-> 4
RADIANS(X)度转换为弧度SELECT RADIANS(90);
-> 1.5707963267949
RAND()返回一个0-1之间的随机浮点值SELECT RAND();
->0.11372889495802009
ROUND(X),
ROUND(X,D)
将参数X四舍五入到小数点后D位SELECT ROUND(1.58),
SELECT ROUND(1.298, 1);
-> 2 ,1.3
SIGN(X)返回参数的符号为- 1(负数),
0(0)或1(整数);
SELECT SIGN(-32);
-> -1
SIN(X)返回X的正弦值SELECT SIN(PI());
-> 1.2246063538224e-16
SQRT(X)返回一个非负数X的平方根SELECT SQRT(4);
->2
TAN(X)正切值SELECT TAN(PI());
-> -1.2246063538224e-16
TRUNCATE(X,D)返回数字X,截短到小数点后D位,
D可以为负数
SELECT TRUNCATE(122,-2);
->100

字符串函数 (String Functions)

函数名描述示例
ASCII(str)返回字符串str的最左面字
符的ASCII代码值
SELECT ASCII('2');
-> 50
BIN(N)返回N的二进制值SELECT BIN(12);
-> '1100'
BIT_LENGTH(str)返回字符串str的长度(以
位为单位)。
SELECT BIT_LENGTH('text');
-> 32
CHAR(N,...
[USING charset_name])
CHAR()将每个参数N解释
为一个整数,并返回由这些
整数的代码值
所给出的字符组成的字符串。
空值被跳过
SELECT CHAR(77,77.3,'77.3');
-> MMM
CHAR_LENGTH(str),
CHARACTER_LENGTH(str)
返回字符串str的长度,
以字符为度量单位。多字
节字符被视为单个字符。
这意味着对于包含5个2字节字符
的字符串,LENGTH()
返回10,而CHAR_LENGTH()
返回5
SELECT CHAR_LENGTH('1ab');
-> 3
CONCAT(str1,str2,...)字符串拼接SELECT CONCAT('My', 'S', 'QL');
->MySQL
CONCAT_WS(separator,str1,
str2,...)
使用separator来拼接字符串SELECT CONCAT_WS(',','First name',
NULL,'Last Name');
->First name,Last Name
ELT(N,str1,str2,str3,...)返回str列表的第N个元素SELECT ELT(4, 'Aa', 'Bb', 'Cc', 'Dd');
->Dd
EXPORT_SET(bits,on,
off[,separator
[,number_of_bits]])
返回一个字符串,
对于值位中设置的每一个位,
您将得到一个on字符串,
对于值中未设置的每一个位,
您将得到一个off字符串。
位中的位从右到左(从低阶位
到高阶位)进行检查
SELECT EXPORT_SET(5,'Y','N',',',4);
-> 'Y,N,Y,N'
FIELD(str,str1,str2,str3,...)返回str在列表中的索引,
如果没有找到str,则返回0
SELECT FIELD('Bb', 'Aa', 'Bb', 'Cc', 'Dd', 'Ff');
->2
FIND_IN_SET(str,strlist)返回str在列表中的索引,
如果没有找到str,则返回0
SELECT FIND_IN_SET('b','a,b,c,d');
->2
FORMAT(X,D)将数字X格式化为D位
小数(四舍五入)
SELECT FORMAT(1.135,2);
->1.14
FROM_BASE64(str)返回base64编码的原始字符串,
可搭配TO_BASE64(str)
SELECT TO_BASE64('abc'),
FROM_BASE64(TO_BASE64('abc'));
->'JWJj', 'abc'
HEX(N or S)获取十进制数或字符串的十六
进制表示形式
SELECT HEX(255);
->'FF'
INSERT(str,pos,len,newstr)符串str以pos位置开始,len字符
由字符串newstr替换
SELECT INSERT('Quadratic', 3, 4, 'What');
->QuWhattic
INSTR(str,substr)返回substr在str中的位置SELECT INSTR('foobarbar', 'bar');
-> 4
LCASE(str),LOWER(str)转化为小写SELECT LCASE('AA');
->aa
LEFT(str,len)返回字符串str中最左边的
len字符,如果参数为空,
则返回NULL
SELECT LEFT('foobarbar', 5);
->fooba
LENGTH(str)返回字符串长度SELECT LENGTH('text');
->4
LOAD_FILE(file_name)读取文件并以字符串的
形式返回文件内容
UPDATE t SET
blob_col=LOAD_FILE('/tmp/picture')
WHERE id=1;
LOCATE(substr,str),
LOCATE(substr,str,pos)
返回substr在str中的起始位置SELECT LOCATE('bar', 'foobarbar', 5);
-> 7
LPAD(str,len,padstr)返回字符串str,用字符串
padstr左填充为len字符长度
。如果str比len长,则返
回值缩短为len字符
SELECT LPAD('hi',4,'??');
-> ??hi
LTRIM(str)移除字符串开头的空格SELECT LTRIM(' barbar');
->barbar
MAKE_SET(bits,str1,str2,...)返回一组以逗号分隔的字符串,
这些字符串的对应位在位集中
SELECT MAKE_SET(1
MID(str,pos,len)等同 SUBSTRING(str,pos,len)
OCT(N)返回一个字符串表示的八
进制值N,其中N是(BIGINT)
数字
SELECT OCT(12);
->14
OCTET_LENGTH(str)等同length()
ORD(str)如果字符串str最左边的
字符是一个多字节字符,
则返回该字符的代码.如果
最左边的字符不是一个
多字节字符,则等同 ASCII()
POSITION(substr IN str)等同 LOCATE(substr,str)
QUOTE(str)引用一个字符串来生成一个
结果,该结果可以用作SQL语
句中正确转义的数据值
SELECT QUOTE(NULL); -> NULL
REPEAT(str,count)返回由字符串str重复计数
次数组成的字符串。如果count小
于1,返回一个空字符串。如果
str或count为空,则返回NULL
SELECT REPEAT('MySQL', 3);
-> MySQLMySQLMySQL
REPLACE(str,from_str,to_str)将str中的from_str替换为to_strSELECT REPLACE(
'www.mysql.com', 'w', 'Ww');
->WwWwWw.mysql.com
RIGHT(str,len)返回字符串str中最右边的
len字符,如果参数为空,
则返回NULL
SELECT RIGHT('foobarbar', 4);
-> rbar
RPAD(str,len,padstr)返回字符串str,用字符串padstr
右填充为len字符长度。如果str比
len长,则返回值缩短为len字符。
SELECT RPAD('hi',5,'?');
->hi???
RTRIM(str)移除字符串结尾的空格SELECT RTRIM('barbar ');
->barbar
SOUNDEX(str)从str返回一个soundex字符串SELECT SOUNDEX('Hello');
->H400
SPACE(N)返回N个空格SELECT SPACE(6);
->' '
SUBSTRING(str,pos),
SUBSTRING(str FROM pos),
SUBSTRING(str,pos,len),
SUBSTRING(str FROM
pos FOR len)
字符串截图,等同SUBSTR()SELECT SUBSTRING('foobarbar' FROM 4);
->barbar
SELECT SUBSTRING('Quadratically',5,6);
-> 'ratica'
SELECT SUBSTRING('Sakila', -3);
-> 'ila'
SELECT SUBSTRING('Sakila', -5, 3);
-> 'aki'
SELECT SUBSTRING('Sakila'
FROM -4 FOR 2);
-> 'ki'
SUBSTRING_INDEX(str,
delim,count)
在分隔符delim出现计数之前,
从字符串str返回子字符串。
如果count为正数,则返回最
后分隔符左边的所有
内容(从左边计数)。如果count为
负数,则返回最后分隔
符右边的所有内容(从右边计数
)。SUBSTRING_INDEX()在搜索
delim时执行区分大小写的匹配
SELECT SUBSTRING_INDEX
('www.mysql.com', '.', 2);
-> 'www.mysql'
SELECT SUBSTRING_INDEX
('www.mysql.com', '.', -2);
-> 'mysql.com'
TRIM([{BOTH |
LEADING | TRAILING}
[remstr] FROM] str),
TRIM([remstr FROM] str)
返回删除所有remstr
前缀或后缀的字符串str。如果
没有一个说明符同时给
出、引导符或尾随符,
则假定两者都有。
remstr是可选的,如果没
有指定,则删除空格
SELECT TRIM(' bar ');
-> 'bar'
SELECT TRIM(LEADING 'x' FROM 'xxxbarxxx');
-> 'barxxx'
SELECT TRIM(BOTH 'x' FROM 'xxxbarxxx');
-> 'bar'
SELECT TRIM(TRAILING 'xyz' FROM 'barxxyz');
-> 'barx'
UCASE(str)返回大写字符串,等同 UPPER()
UNHEX(str)对于字符串参数str, UNHEX(str)
将参数中的每对字符解
释为十六进制数字,
并将其转换为该数字所表
示的字节。返回值是一个
二进制字符串
SELECT UNHEX('4D7953514C');
-> 'MySQL'
UPPER(str)返回大写字符串,等同 UCASE()

时间函数 (Date and Time Functions)

函数名描述示例
ADDDATE(date,
INTERVAL expr unit),
ADDDATE(expr,days)
时间加减函数。 当使
用第二个参数的INTERVAL
形式调用时,ADDDATE()
是DATE_ADD()的同义词。
相关函数SUBDATE()
是DATE_SUB()的同义词
SELECT DATE_ADD('2008-01-02', INTERVAL 31 DAY);
-> '2008-02-02'
SELECT ADDDATE('2008-01-02', INTERVAL 31 DAY);
-> '2008-02-02'
SELECT ADDDATE('2008-01-02', 31);
-> '2008-02-02'
ADDTIME(expr1,expr2)expr1是时间或日期时间表达式,
expr2是时间表达式,
返回expr1+expr2
SELECT ADDTIME('2007-12-31 23:59:59.999999', '1 1:1:1.000002');
-> '2008-01-02 01:01:01.000001'
SELECT ADDTIME('01:00:00.999999', '02:00:00.999998');
-> '03:00:01.999997'
CONVERT_TZ(dt,
from_tz,to_tz)
将datetime值dt从from_tz
给出的时区转换为to_tz
给出的时区,并返回
结果值
SELECT CONVERT_TZ('2004-01-01 12:00:00','GMT','MET');
-> '2004-01-01 13:00:00'
SELECT CONVERT_TZ('2004-01-01 12:00:00','+00:00','+10:00');
-> '2004-01-01 22:00:00'
CURDATE()
CURRENT_DATE
CURRENT_DATE()
根据函数在字符串或
数字上下文中的使用
情况,以'YYYY-MM-DD'
或YYYYMMDD格式返回
当前日期作为值
SELECT CURDATE();
-> '2008-06-13'
SELECT CURDATE() + 0;
SELECT CURDATE() + 0;
CURRENT_TIME
CURRENT_TIME([fsp])
CURTIME()
以'hh:mm:ss'或hhmmss
格式返回当前时间值,
具体取决于函数是在字
符串中使用还是在数字
上下文中使用。该值
在会话时区中表示
SELECT CURTIME();
-> '23:50:26'
CURRENT_TIMESTAMP
CURRENT_TIMESTAMP
([fsp])NOW()
以'YYYY-MM-DD hh:mm:ss'或
YYYYMMDDhhmmss格式返回
当前日期和时间,
具体取决于函数是在
字符串中使用还是在数
字上下文中使用。该值
在会话时区中表示
SELECT NOW();
-> '2007-12-15 23:50:26'
DATE(expr)提取date或datetime表
达式expr的date部分
SELECT DATE('2003-12-31 01:02:03');
-> '2003-12-31'
DATEDIFF(expr1,expr2)DATEDIFF()返回
expr1 - expr2,
表示为从一个日期到
另一个日期的天数。
expr1和expr2是日期或日期
和时间表达式。
计算中只使用值的日期部分
SELECT DATEDIFF('2007-12-31 23:59:59','2007-12-30');
-> 1
DATE_ADD(date,
INTERVAL expr unit)
DATE_SUB(date,
INTERVAL expr unit)
通ADDDATE()
DATE_FORMAT
(date,format)
根据格式字符串格式化
日期值
SELECT DATE_FORMAT('2007-10-04 22:23:00', '%H:%i:%s');
-> '22:23:00'
参见format列表
DATE_SUB(date,
INTERVAL expr unit)
同 DATE_ADD()
DAY(date)同DAYOFMONTH()
DAYNAME(date)返回日期的工作日名称。
名称使用的语言由
lc_time_names
系统变量的值控制
SELECT DAYNAME('2007-02-03');
-> 'Saturday'
参见local列表
DAYOFMONTH(date)返回日期的月份的日期,范围
在1到31之间,或0表示日期,
例如“00:00 -00-00”或“200:00 -00”
包含零日部分
SELECT DAYOFMONTH('2007-02-03');
-> 3
DAYOFWEEK(date)返回日期的工作日索引
(1 = Sunday, 2 = Monday,…,
7 = Saturday)。这些索引值对
应于ODBC标准
SELECT DAYOFWEEK('2007-02-03');
-> 7
DAYOFYEAR(date)返回一年中的日期,范围
为1到366
SELECT DAYOFYEAR('2007-02-03');
-> 34
EXTRACT
(unit FROM date)
EXTRACT()函数使用与
DATE_ADD()或DATE_SUB()
相同的单元说明符,但
是它从日期中提取部分
内容,而不是执行日期
算术。有关单位
参数的信息,请参阅
Intervals列表
SELECT EXTRACT(YEAR FROM '2019-07-02');
->2019
FROM_DAYS(N)给定日期N,返回日期值SELECT FROM_DAYS(730669);
->'2000-07-03'
FROM_UNIXTIME(
unix_timestamp
[,format])
返回unix_timestamp参数
的表示形式,作为
'YYYY-MM-DD hh:mm:ss'
或YYYYMMDDhhmmss中的值。
uuuuu格式,取决于函
数是在字符串中使用
还是在数字上下文中使用
SELECT FROM_UNIXTIME(1447430881);
-> '2015-11-13 10:08:01'
SELECT FROM_UNIXTIME(1447430881,'%Y %D %M %h:%i:%s %x');
-> '2015 13th November 10:08:01 2015'
GET_FORMAT({DATE
|TIME|DATETIME},
{'EUR'|'USA'|'JIS'
|'ISO'|'INTERNAL'})
返回格式字符串。这个函数与
DATE_FORMAT()和
STR_TO_DATE()函数结合
使用非常有用。
SELECT DATE_FORMAT('2003-10-03',GET_FORMAT(DATE,'EUR'));
-> '03.10.2003'
SELECT STR_TO_DATE('10.31.2003',GET_FORMAT(DATE,'USA'));
-> '2003-10-31' 更多参见GET_FORMAT列表
HOUR(time)返回时间的小时。
对于时间值,返回值
的范围是0到23。然而,
时间值的范围实际上
要大得多,所以
HOUR可以返回大于23的值
SELECT HOUR('10:05:03');
-> 10
LAST_DAY(date)根据date或datetime值返回该月
最后一天的对应值。如果
参数无效,则返回NULL
SELECT LAST_DAY('2003-02-05');
-> '2003-02-28'
SELECT LAST_DAY('2004-01-01 01:01:01');
-> '2004-01-31'
LOCALTIME,
LOCALTIME([fsp])
同NOW()
LOCALTIMESTAMP,
LOCALTIMESTAMP
([fsp])
同NOW()
MAKEDATE(year,dayofyear)根据年份和一年中的
日期数的值,返回日期。
dayofyear必须大于0,
否则结果为NULL
SELECT MAKEDATE(2011,31), MAKEDATE(2011,32);
-> '2011-01-31', '2011-02-01'
MAKETIME(hour,
minute,second)
根据给定的时分秒返回时
间,第二个参数可以是小数
SELECT MAKETIME(12,15,30);
-> '12:15:30'
MICROSECOND(expr)将time或datetime表达式expr中
的微秒作为0到999999之间的
数字返回
SELECT MICROSECOND('2019-12-31 23:59:59.000010');
-> 10
MINUTE(time)返回0到59范围内的时间分钟SELECT MINUTE('2008-02-03 10:05:03');
-> 5
MONTH(date)返回日期的月份,在1月
到12月的范围内为1到12,
或者在“00000 -00-00”
或“200000 -00-00”等包含
零月份部分的日期范
围内为0
SELECT MONTH('2008-02-03');
-> 2
MONTHNAME(date)返回日期的月份的全名。名
称使用的语言由lc_time_names
系统变量的值控制
SELECT MONTHNAME('2008-02-03');
-> 'February'
NOW([fsp])以'YYYY-MM-DD hh:mm:ss'或
YYYYMMDDhhmmss格式返
回当前日期和时间,具
体取决于函数是在字符串中使
用还是在数字上下文中使用。该
值在会话时区中表示
SELECT NOW();
-> '2007-12-15 23:50:26'
PERIOD_ADD(P,N)在周期P中添加N个月
(格式为YYMM或YYYYMM)。
返回格式为YYYYMM的值
SELECT PERIOD_ADD(200801,2);
-> 200803
PERIOD_DIFF(P1,P2)返回P1和P2期间的月数。
P1和P2的格式应该
是YYMM或YYYYMM
SELECT PERIOD_DIFF(200802,200703);
-> 11
QUARTER(date)返回日期的年度季度,
范围为1到4
SELECT QUARTER('2008-04-01');
-> 2
SECOND(time)返回时间的秒数,
范围0-59
SELECT SECOND('10:05:03');
-> 3
SEC_TO_TIME(seconds)根据秒参数,作为时间
值转换为小时、分钟和
秒。果的范围受时
间数据类型的限制。
如果参数对应于该范围
之外的值,则会出现警告
SELECT SEC_TO_TIME(2378);
-> '00:39:38'
STR_TO_DATE(str,format)将str转化为日期SELECT STR_TO_DATE('01,5,2013','%d,%m,%Y');
-> '2013-05-01'
SUBDATE(date,
INTERVAL expr unit),
SUBDATE(expr,days)
当使用第二个参数的区
间形式调用时,SUBDATE()
是DATE_SUB()的同义词
。有关间隔单元参数的信息,
请参阅DATE_ADD()的讨论
SELECT DATE_SUB('2008-01-02', INTERVAL 31 DAY);
-> '2007-12-02'
SUBTIME(expr1,expr2)SUBTIME()返回与expr1格式
相同的值expr1 - expr2。
expr1是一个时间或
datetime表达式,
expr2是一个时间表达式
SELECT SUBTIME('2007-12-31 23:59:59.999999','1 1:1:1.000002');
-> '2007-12-30 22:58:58.999997'
SYSDATE([fsp])以'YYYY-MM-DD hh:mm:ss'
或YYYYMMDDhhmmss格式
返回当前日期和时间,
具体取决于函数是在字符
串中使用还是在数字
上下文中使用
TIME(expr)提取time或datetime表达式expr
的时间部分,并将其
作为字符串返回
SELECT TIME('2003-12-31 01:02:03');
-> '01:02:03'
SELECT TIME('2003-12-31 01:02:03.000123');
-> '01:02:03.000123'
TIMEDIFF(expr1,expr2)TIMEDIFF()返回表示为时间
值的expr1 - expr2。
expr1和expr2是time或
date-and-time表达
式,但是它们必须具有
相同的类型
SELECT TIMEDIFF('2008-12-31 23:59:59.000001',
'2008-12-30 01:01:01.000002');
-> '46:58:57.999999'
TIMESTAMP(expr),
TIMESTAMP(expr1,expr2)
使用一个参数,该函
数将date或datetime
表达式expr作为datetime
值返回。使用两个参数,
它将时间表达式expr2
添加到date或datetime表达
式expr1中,并将结果作为
datetime值返回
SELECT TIMESTAMP('2003-12-31');
-> '2003-12-31 00:00:00'
SELECT TIMESTAMP('2003-12-31 12:00:00','12:00:00');
-> '2004-01-01 00:00:00'
TIMESTAMPADD(unit,
interval,datetime_expr)
将整数表达式间隔添加
到日期或datetime表达式
datetime_expr。interval的
单位由单位参数给出,该
参数应该是以下值
之一:微秒(微秒)、秒、
分钟、小时、天、周、月、
季或年
SELECT TIMESTAMPADD(MINUTE,1,'2003-01-02');
-> '2003-01-02 00:01:00'
SELECT TIMESTAMPADD(WEEK,1,'2003-01-02');
-> '2003-01-09'
TIMESTAMPDIFF(unit,
datetime_expr1,
datetime_expr2)
返回datetime_expr2−
datetime_expr1,
其中datetime_expr1和
datetime_expr2是日期
或datetime表达式。一个
表达式可以是日期,
另一个表达式是日
期时间;日期值被视为一个
datetime,
在必要时包含时间部分
'00:00:00'。结果的
单位(整数)由单位参
数给出。unit的合法值
与TIMESTAMPADD()函
数描述中列出的值相同
SELECT TIMESTAMPDIFF(MONTH,'2003-02-01',
'2003-05-01');
-> 3
SELECT TIMESTAMPDIFF(MINUTE,'2003-02-01',
'2003-05-01 12:05:55');
->128885
TIME_FORMAT
(time,format)
这类似于DATE_FORMAT()函数,
但是格式字符串可能只包含小时、
分钟、秒和微秒的格式说明符。
其他说明符生成空值或0
SELECT TIME_FORMAT('100:00:00', '%H %k %h %I %l');
-> '100 100 04 04 4'
TIME_TO_SEC(time)时间time转化为秒SELECT TIME_TO_SEC('22:23:00');
-> 80580
TO_DAYS(date)定日期date,返回日期号
(从第0年开始的天数)
SELECT TO_DAYS(950501);
-> 728779
SELECT TO_DAYS('2007-10-07');
-> 733321
TO_SECONDS(expr)给定日期或datetime expr,返回从
第0年开始的秒数。如果expr
不是一个有效的日期或
datetime值,则返回NULL
SELECT TO_SECONDS('2009-11-29 13:43:32');
-> 63426721412
UNIX_TIMESTAMP
([date])
如果在没有date参数的
情况下调用UNIX_TIMESTAMP(),
它将返回一个Unix时间戳,
表示“1970-01-01 00:00:00”UTC
之后的秒.如果使用date
参数调用UNIX_TIMESTAMP(),
它将返回参数的值,
为“1970-01-01 00:00:00”
UTC之后的秒
SELECT UNIX_TIMESTAMP();
-> 1447431666
SELECT UNIX_TIMESTAMP('2015-11-13 10:20:19.012');
-> 1447431619.012
UTC_DATE,
UTC_DATE()
返回当前UTC日期作为
'YYYY-MM-DD'或YYYYMMDD
格式的值,这取决于
函数是在字符串中使用
还是在数字上下文中
使用。
SELECT UTC_DATE(), UTC_DATE() + 0;
-> '2003-08-14', 20030814
UTC_TIME,
UTC_TIME([fsp])
以'hh:mm:ss'或hhmmss
格式返回当前UTC
时间值,具体取决于函
数是在字符串中使用还
是在数字上下文中使用
SELECT UTC_TIME(), UTC_TIME() + 0;
-> '18:07:53', 180753.000000
UTC_TIMESTAMP,
UTC_TIMESTAMP
([fsp])
以'YYYY-MM-DD hh:mm:ss'
或YYYYMMDDhhmmss
格式返回当前UTC日期和时间,
具体取决于函数是在字
符串中使用还是在
数字上下文中使用
SELECT UTC_TIMESTAMP(), UTC_TIMESTAMP() + 0;
-> '2003-08-14 18:08:04', 20030814180804.000000
WEEK(date[,mode])返回日期的星期号。
two-argument form of WEEK()
使您能够指定该周是
在周日还是周一开始,
以及返回值应该
在0到53之间,还是在1到53之间。
如果省略mode参数,
则使用default_week_format
系统变量的值 mode值
参见mode列表
SELECT WEEK('2008-02-20');
-> 7
WEEKDAY(date)返回日期的星期索引
(0 =星期一、1 =星期二、
…6 =星期日)。
SELECT WEEKDAY('2008-02-03 22:23:00');
-> 6
WEEKOFYEAR(date)以1到53之间的数字返回
日期的日历周。
WEEKOFYEAR()是一个兼容
函数,它等价于WEEK
(date,3)。
SELECT WEEKOFYEAR('2008-02-20');
-> 8
YEAR(date)返回日期的年份,
范围为1000到9999,
或0表示“0”日期。
SELECT YEAR('1987-01-01');
-> 1987
YEARWEEK(date),
YEARWEEK(date,mode)
返回日期的年份和星期SELECT YEARWEEK('1987-01-01');
-> 198652

Intervals unit 列表

unit值期望的格式
MICROSECONDMICROSECONDS
SECONDSECONDS
MINUTEMINUTES
HOURHOURS
DAYDAYS
WEEKWEEKS
MONTHMONTHS
QUARTERQUARTERS
YEARYEARS
SECOND_MICROSECOND'SECONDS.MICROSECONDS'
MINUTE_MICROSECOND'MINUTES:SECONDS.MICROSECONDS'
MINUTE_SECOND'MINUTES:SECONDS'
HOUR_MICROSECOND'HOURS:MINUTES:SECONDS.MICROSECONDS'
HOUR_SECOND'HOURS:MINUTES:SECONDS'
HOUR_MINUTE'HOURS:MINUTES'
DAY_MICROSECOND'DAYS HOURS:MINUTES:SECONDS.MICROSECONDS'
DAY_SECOND'DAYS HOURS:MINUTES:SECONDS'
DAY_MINUTE'DAYS HOURS:MINUTES'
DAY_HOUR'DAYS HOURS'
YEAR_MONTH'YEARS-MONTHS'

local time name列表

符号描述
ar_AEArabic - United Arab Emirates
ar_BHArabic - Bahrain
ar_DZArabic - Algeria
ar_EGArabic - Egypt
ar_INArabic - India
ar_IQArabic - Iraq
ar_JOArabic - Jordan
ar_KWArabic - Kuwait
ar_LBArabic - Lebanon
ar_LYArabic - Libya
ar_MAArabic - Morocco
ar_OMArabic - Oman
ar_QAArabic - Qatar
ar_SAArabic - Saudi Arabia
ar_SDArabic - Sudan
ar_SYArabic - Syria
ar_TNArabic - Tunisia
ar_YEArabic - Yemen
be_BYBelarusian - Belarus
bg_BGBulgarian - Bulgaria
ca_ESCatalan - Spain
cs_CZCzech - Czech Republic
da_DKDanish - Denmark
de_ATGerman - Austria
de_BEGerman - Belgium
de_CHGerman - Switzerland
de_DEGerman - Germany
de_LUGerman - Luxembourg
el_GRGreek - Greece
en_AUEnglish - Australia
en_CAEnglish - Canada
en_GBEnglish - United Kingdom
en_INEnglish - India
en_NZEnglish - New Zealand
en_PHEnglish - Philippines
en_USEnglish - United States
en_ZAEnglish - South Africa
en_ZWEnglish - Zimbabwe
es_ARSpanish - Argentina
es_BOSpanish - Bolivia
es_CLSpanish - Chile
es_COSpanish - Colombia
es_CRSpanish - Costa Rica
es_DOSpanish - Dominican Republic
es_ECSpanish - Ecuador
es_ESSpanish - Spain
es_GTSpanish - Guatemala
es_HNSpanish - Honduras
es_MXSpanish - Mexico
es_NISpanish - Nicaragua
es_PASpanish - Panama
es_PESpanish - Peru
es_PRSpanish - Puerto Rico
es_PYSpanish - Paraguay
es_SVSpanish - El Salvador
es_USSpanish - United States
es_UYSpanish - Uruguay
es_VESpanish - Venezuela
et_EEEstonian - Estonia
eu_ESBasque - Basque
fi_FIFinnish - Finland
fo_FOFaroese - Faroe Islands
fr_BEFrench - Belgium
fr_CAFrench - Canada
fr_CHFrench - Switzerland
fr_FRFrench - France
fr_LUFrench - Luxembourg
gl_ESGalician - Spain
gu_INGujarati - India
he_ILHebrew - Israel
hi_INHindi - India
hr_HRCroatian - Croatia
hu_HUHungarian - Hungary
id_IDIndonesian - Indonesia
is_ISIcelandic - Iceland
it_CHItalian - Switzerland
it_ITItalian - Italy
ja_JPJapanese - Japan
ko_KRKorean - Republic of Korea
lt_LTLithuanian - Lithuania
lv_LVLatvian - Latvia
mk_MKMacedonian - FYROM
mn_MNMongolia - Mongolian
ms_MYMalay - Malaysia
nb_NONorwegian(Bokmål) - Norway
nl_BEDutch - Belgium
nl_NLDutch - The Netherlands
no_NONorwegian - Norway
pl_PLPolish - Poland
pt_BRPortugese - Brazil
pt_PTPortugese - Portugal
rm_CHRomansh - Switzerland
ro_RORomanian - Romania
ru_RURussian - Russia
ru_UARussian - Ukraine
sk_SKSlovak - Slovakia
sl_SISlovenian - Slovenia
sq_ALAlbanian - Albania
sr_RSSerbian - Yugoslavia
sv_FISwedish - Finland
sv_SESwedish - Sweden
ta_INTamil - India
te_INTelugu - India
th_THThai - Thailand
tr_TRTurkish - Turkey
uk_UAUkrainian - Ukraine
ur_PKUrdu - Pakistan
vi_VNVietnamese - Viet Nam
zh_CNChinese - China
zh_HKChinese - Hong Kong
zh_TWChinese - Taiwan Province of China

format 列表

符号描述
%aAbbreviated weekday name (Sun..Sat)
%bAbbreviated month name (Jan..Dec)
%cMonth, numeric (0..12)
%DDay of the month with English suffix (0th, 1st, 2nd, 3rd, …)
%dDay of the month, numeric (00..31)
%eDay of the month, numeric (0..31)
%fMicroseconds (000000..999999)
%HHour (00..23)
%hHour (01..12)
%IHour (01..12)
%iMinutes, numeric (00..59)
%jDay of year (001..366)
%kHour (0..23)
%lHour (1..12)
%MMonth name (January..December)
%mMonth, numeric (00..12)
%pAM or PM
%rTime, 12-hour (hh:mm:ss followed by AM or PM)
%SSeconds (00..59)
%sSeconds (00..59)
%TTime, 24-hour (hh:mm:ss)
%UWeek (00..53), where Sunday is the first day of the week; WEEK() mode 0
%uWeek (00..53), where Monday is the first day of the week; WEEK() mode 1
%VWeek (01..53), where Sunday is the first day of the week; WEEK() mode 2; used with %X
%vWeek (01..53), where Monday is the first day of the week; WEEK() mode 3; used with %x
%WWeekday name (Sunday..Saturday)
%wDay of the week (0=Sunday..6=Saturday)
%XYear for the week where Sunday is the first day of the week, numeric, four digits; used with %V
%xYear for the week, where Monday is the first day of the week, numeric, four digits; used with %v
%YYear, numeric, four digits
%yYear, numeric (two digits)
%%A literal % character
%xx, for any “x” not listed above

GET_FORMAT 列表

函数调用结果
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'

WEEK FORMAT 列表

模式值星期的第一天值范围第一个星期
0Sunday0-53with a Sunday in this year
1Monday0-53with 4 or more days this year
2Sunday1-53with a Sunday in this year
3Monday1-53with 4 or more days this year
4Sunday0-53with 4 or more days this year
5Monday0-53with a Monday in this year
6Sunday1-53with 4 or more days this year
7Monday1-53with a Monday in this year

锁函数 (Locking Functions)

函数名描述示例
GET_LOCK(str,timeout)获取超过timeout和
str给定名称的锁,获
取成功返回1,失败
返回0
SELECT GET_LOCK('lock1',10);
IS_FREE_LOCK(str)检查名为str的锁是否
可以自由使用(即没有
锁定)。如果锁是空闲
的(没有人在使用锁),
返回1;如果锁在使用,
返回0;如果发生错误
(例如不正确的参数),
返回NULL
IS_USED_LOCK(str)检查名为str的锁是否
正在使用(即已锁定)。
如果是,则返回持有锁
的客户机会话的连接标
识符。否则,返回NULL
RELEASE_ALL_LOCKS()释放当前会话持有的所
有命名锁,并返回释放
的锁的数量(如果没有
锁,则为0)
RELEASE_LOCK(str)释放使用GET_LOCK()获
得的str锁

信息函数 (Information Functions)

函数名描述示例
BENCHMARK(count,expr)执行expr表达式count次,
它可以用来计算表达式
的处理速度。对于不适
当的参数或者count为负
数返回0或NULL
SELECT BENCHMARK(1000000,AES_ENCRYPT('hello','goodbye'));
-> 0
CHARSET(str)返回字符串参数的字符
SELECT CHARSET(USER());
-> 'utf8'
COERCIBILITY(str)返回字符串参数的排序
规则强制值,返回值参
见列表
SELECT COERCIBILITY(USER());
-> 3
COLLATION(str)返回字符串参数的排序
规则
SELECT COLLATION('abc');
-> 'utf8_general_ci'
CONNECTION_ID()返回连接的连接ID(线
程ID)。每个连接都有
一个ID,该ID在当前连
接的客户端集中是唯
一的
SELECT CONNECTION_ID();
->23786
CURRENT_ROLE()返回一个utf8字符串,
该字符串包含当前会话
的当前活动角色,用逗
号分隔,如果没有活动
角色,则返回NONE。该
值反映sql_quote_show_create
系统变量的设置
SELECT CURRENT_ROLE();
->r1@%,r2@%
CURRENT_USER,
CURRENT_USER()
返回服务器用于验证当前
客户机的MySQL帐户的用
户名和主机名组合
select current_user
->root@%
DATABASE()返回utf8字符集中的默认
(当前)数据库名
SELECT DATABASE();
-> test
FOUND_ROWS()对于带有LIMIT子句
的SELECT,如果没有
LIMIT子句,将返
回的行数
ICU_VERSION()用于支持正则表达
式操作的Unicode (ICU)
库的国际组件版本
LAST_INSERT_ID(),
LAST_INSERT_ID(expr)
没有参数,返回一个
BIGINT UNSIGNED(64位)值,
该值表示作为最近执行的
INSERT语句的结果.
使用参数LAST_INSERT_ID()
返回一个无符号整数。
ROLES_GRAPHML()返回一个utf8字符串,
其中包含表示内存角
色子图的GraphML文档
ROW_COUNT()更新的行数
SCHEMA()同DATABASW()
SESSION_USER()同USER()
SYSTEM_USER()同USER()
USER()返回客户端的用户名和主机名
VERSION()返回MySQL服务器版本

COERCIBILITY 返回值列表

含义举例
0Explicit collationValue with COLLATE clause
1No collationConcatenation of strings with different collations
2Implicit collationColumn value, stored routine parameter or local variable
3System constantUSER() return value
4CoercibleLiteral string
5NumericNumeric or temporal value
5IgnorableNULL or an expression derived from NULL

控制流函数 (Control Flow Functions)

函数名描述示例
CASE value
WHEN [compare_value]
THEN result
[WHEN [compare_value]
THEN result ...]
[ELSE result] END
CASE WHEN [condition]
THEN result [WHEN
[condition] THEN result ...]
[ELSE result] END
case 判断SELECT CASE 1 WHEN 1 THEN 'one'
WHEN 2 THEN 'two' ELSE 'more' END;
-> 'one'
SELECT CASE WHEN 1>0 THEN 'true' ELSE 'false' END;
-> 'true'
IF(expr1,expr2,expr3)如果expr1条件为真,
返回expr2,
否则返回expr3
SELECT IF(1<2,'yes','no');
-> 'yes'
IFNULL(expr1,expr2)如果expr1不为NULL,
返回expr1,
否则返回expr2
SELECT IFNULL(1,0);
-> 1
NULLIF(expr1,expr2)如果expr1=expr2
返回NULL,
否则返回expr1
SELECT NULLIF(1,1);
-> NULL

转载于:https://www.cnblogs.com/warmsmile/p/11382962.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值