• 【数据库】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_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
  • 相关阅读:
    亲们,知道你想更优秀,你做到这些了吗?
    Linux socket编程学习笔记(一):socket()函数详解
    关于typedef的用法总结
    c,c++里面,头文件里面的ifndef /define/endif的作用
    玩转ptrace
    文笔流畅,修辞得体
    定义和实现一个类的成员函数为回调函数
    《Shell 脚本学习指南 》 背景知识与入门 [第一、二章]
    使用ptrace跟踪进程
    FCKeditor 2.6.4.1配置
  • 原文地址:https://www.cnblogs.com/warmsmile/p/11382962.html
Copyright © 2020-2023  润新知