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

末鹿安然 提交于 2019-11-28 00:33:30

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_str SELECT 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值 期望的格式
MICROSECOND MICROSECONDS
SECOND SECONDS
MINUTE MINUTES
HOUR HOURS
DAY DAYS
WEEK WEEKS
MONTH MONTHS
QUARTER QUARTERS
YEAR YEARS
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_AE Arabic - United Arab Emirates
ar_BH Arabic - Bahrain
ar_DZ Arabic - Algeria
ar_EG Arabic - Egypt
ar_IN Arabic - India
ar_IQ Arabic - Iraq
ar_JO Arabic - Jordan
ar_KW Arabic - Kuwait
ar_LB Arabic - Lebanon
ar_LY Arabic - Libya
ar_MA Arabic - Morocco
ar_OM Arabic - Oman
ar_QA Arabic - Qatar
ar_SA Arabic - Saudi Arabia
ar_SD Arabic - Sudan
ar_SY Arabic - Syria
ar_TN Arabic - Tunisia
ar_YE Arabic - Yemen
be_BY Belarusian - Belarus
bg_BG Bulgarian - Bulgaria
ca_ES Catalan - Spain
cs_CZ Czech - Czech Republic
da_DK Danish - Denmark
de_AT German - Austria
de_BE German - Belgium
de_CH German - Switzerland
de_DE German - Germany
de_LU German - Luxembourg
el_GR Greek - Greece
en_AU English - Australia
en_CA English - Canada
en_GB English - United Kingdom
en_IN English - India
en_NZ English - New Zealand
en_PH English - Philippines
en_US English - United States
en_ZA English - South Africa
en_ZW English - Zimbabwe
es_AR Spanish - Argentina
es_BO Spanish - Bolivia
es_CL Spanish - Chile
es_CO Spanish - Colombia
es_CR Spanish - Costa Rica
es_DO Spanish - Dominican Republic
es_EC Spanish - Ecuador
es_ES Spanish - Spain
es_GT Spanish - Guatemala
es_HN Spanish - Honduras
es_MX Spanish - Mexico
es_NI Spanish - Nicaragua
es_PA Spanish - Panama
es_PE Spanish - Peru
es_PR Spanish - Puerto Rico
es_PY Spanish - Paraguay
es_SV Spanish - El Salvador
es_US Spanish - United States
es_UY Spanish - Uruguay
es_VE Spanish - Venezuela
et_EE Estonian - Estonia
eu_ES Basque - Basque
fi_FI Finnish - Finland
fo_FO Faroese - Faroe Islands
fr_BE French - Belgium
fr_CA French - Canada
fr_CH French - Switzerland
fr_FR French - France
fr_LU French - Luxembourg
gl_ES Galician - Spain
gu_IN Gujarati - India
he_IL Hebrew - Israel
hi_IN Hindi - India
hr_HR Croatian - Croatia
hu_HU Hungarian - Hungary
id_ID Indonesian - Indonesia
is_IS Icelandic - Iceland
it_CH Italian - Switzerland
it_IT Italian - Italy
ja_JP Japanese - Japan
ko_KR Korean - Republic of Korea
lt_LT Lithuanian - Lithuania
lv_LV Latvian - Latvia
mk_MK Macedonian - FYROM
mn_MN Mongolia - Mongolian
ms_MY Malay - Malaysia
nb_NO Norwegian(Bokmål) - Norway
nl_BE Dutch - Belgium
nl_NL Dutch - The Netherlands
no_NO Norwegian - Norway
pl_PL Polish - Poland
pt_BR Portugese - Brazil
pt_PT Portugese - Portugal
rm_CH Romansh - Switzerland
ro_RO Romanian - Romania
ru_RU Russian - Russia
ru_UA Russian - Ukraine
sk_SK Slovak - Slovakia
sl_SI Slovenian - Slovenia
sq_AL Albanian - Albania
sr_RS Serbian - Yugoslavia
sv_FI Swedish - Finland
sv_SE Swedish - Sweden
ta_IN Tamil - India
te_IN Telugu - India
th_TH Thai - Thailand
tr_TR Turkish - Turkey
uk_UA Ukrainian - Ukraine
ur_PK Urdu - Pakistan
vi_VN Vietnamese - Viet Nam
zh_CN Chinese - China
zh_HK Chinese - Hong Kong
zh_TW Chinese - Taiwan Province of China

format 列表

符号 描述
%a Abbreviated weekday name (Sun..Sat)
%b Abbreviated month name (Jan..Dec)
%c Month, numeric (0..12)
%D Day of the month with English suffix (0th, 1st, 2nd, 3rd, …)
%d Day of the month, numeric (00..31)
%e Day of the month, numeric (0..31)
%f Microseconds (000000..999999)
%H Hour (00..23)
%h Hour (01..12)
%I Hour (01..12)
%i Minutes, numeric (00..59)
%j Day of year (001..366)
%k Hour (0..23)
%l Hour (1..12)
%M Month name (January..December)
%m Month, numeric (00..12)
%p AM or PM
%r Time, 12-hour (hh:mm:ss followed by AM or PM)
%S Seconds (00..59)
%s Seconds (00..59)
%T Time, 24-hour (hh:mm:ss)
%U Week (00..53), where Sunday is the first day of the week; WEEK() mode 0
%u Week (00..53), where Monday is the first day of the week; WEEK() mode 1
%V Week (01..53), where Sunday is the first day of the week; WEEK() mode 2; used with %X
%v Week (01..53), where Monday is the first day of the week; WEEK() mode 3; used with %x
%W Weekday name (Sunday..Saturday)
%w Day of the week (0=Sunday..6=Saturday)
%X Year for the week where Sunday is the first day of the week, numeric, four digits; used with %V
%x Year for the week, where Monday is the first day of the week, numeric, four digits; used with %v
%Y Year, numeric, four digits
%y Year, numeric (two digits)
%% A literal % character
%x x, 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 列表

模式值 星期的第一天 值范围 第一个星期
0 Sunday 0-53 with a Sunday in this year
1 Monday 0-53 with 4 or more days this year
2 Sunday 1-53 with a Sunday in this year
3 Monday 1-53 with 4 or more days this year
4 Sunday 0-53 with 4 or more days this year
5 Monday 0-53 with a Monday in this year
6 Sunday 1-53 with 4 or more days this year
7 Monday 1-53 with 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 返回值列表

含义 举例
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 Numeric Numeric or temporal value
5 Ignorable NULL 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
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!