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 |