MySQL 内置了许多函数,包括数值函数、字符串函数以及日期函数。
我们首先来看下常用的数值函数。
ABS(x) – 返回 x 的绝对值。
SELECT ABS(-1);
SELECT ABS(1);
CEIL(x) – 返回大于或等于 x 的最小整数。
SELECT ceil(1.5);
SELECT ceil(2);
FLOOR(x) – 返回小于或等于 x 的最大整数。
SELECT FLOOR(1.5);
SELECT FLOOR(2)
RAND(x) – 返回 0~1 之间的随机数。
SELECT RAND();
ROUND() – 函数用于数据的四舍五入。
ROUND(x, d), x 指要处理的数,d 是指保留几位小数。
SELECT ROUND(5.45, 1)
ROUND(x), 其实就是 ROUND(x,0), 也就是默认 d 为 0。
SELECT ROUND(5.45);
TRUNCATE(x, y) – 返回数据 x 保留到小数点后 y 位的值。
SELECT TRUNCATE(5.45, 1);
POWER(x, y) – 返回 x 的 y 次方。
SELECT POWER(3, 2);
SQRT(x) – 返回 x 的平方根。
SELECT SQRT(25);
MOD(x, y) – 返回 x 除以 y 以后的余数。
SELECT MOD(8, 3);
字符串函数
TRIM(s) – 去除字符串s首尾的空格。
SELECT TRIM(' hello world! ');
LTRIM(s) – 去除字符串s首部的空格。
SELECT LTRIM(' hello world! ');
RTRIM(s) – 去除字符串s尾部的空格。
SELECT RTRIM(' hello world! ');
UPPER(s) – 将字符串s大写。
SELECT UPPER('Hello World!');
LOWER(s) – 将字符串s小写。
SELECT LOWER('Hello World!');
LENGTH(s) – 返回字符串s的长度。
SELECT LENGTH('Hello World!');
LEFT(s, n) – 返回字符串 s 的前n个字符。
SELECT LEFT('Hello World!', 5);
RIGHT(s, n) – 返回字符串 s 的后n个字符。
SELECT RIGHT('Hello World!', 5);
SUBSTRING(s, n) – 返回从字符串s中的第n个位置开始的字符串
SELECT SUBSTRING('Hello World!', 5);
SUBSTRING(s, n, len) – 返回从字符串s中的第n个位置开始长度为len的字符串
SELECT SUBSTRING('Hello World!', 5, 5);
CONCAT(s1, s2) – 将字符串s1, s2等多个字符串合并为一个字符串
SELECT CONCAT('Hello', ' World!');
日期和时间函数
NOW() – 返回当前时间的日期和时间
SELECT NOW();
CURDATE() – 返回当前时间的年月日
SELECT CURDATE()
CURTIME() – 返回当前时间的时分秒
SELECT CURTIME();
YEAR(d) – 返回d中的年份值
SELECT YEAR(NOW());
MONTH(d) – 返回d中的月份值
SELECT MONTH(NOW());
DAY(d) – 返回d中的天值
SELECT DAY(NOW())
HOUR(d) – 返回d中的小时值
SELECT HOUR(NOW());
MINUTE(d) – 返回d中的分钟值
SELECT MINUTE(NOW());
SECOND(d) – 返回d中的秒值
SELECT SECOND(NOW());
QUARTER(d) – 返回日期d是第几季度
SELECT QUARTER(NOW());
MONTHNAME(d) – 返回d当中的月份名称
SELECT MONTHNAME(NOW());
DAYNAME(d) – 返回d是星期几
SELECT DAYNAME(NOW());
DAYOFWEEK(d) – 返回日期d是星期的第几天
SELECT DAYOFWEEK(NOW());
DAYOFMONTH(d) – 返回日期d是本月的第几天
SELECT DAYOFMONTH(NOW());
DAYOFYEAR(d) – 返回日期d是本年的第几天
SELECT DAYOFYEAR(NOW());
DATE_ADD(d, INTERVAL n DAY) – 计算日期d加上n天的日期
SELECT DATE_ADD(CURDATE(), INTERVAL 1 DAY);
DATE_SUB(d, INTERVAL n DAY) – 计算日期d减去n天的日期
SELECT DATE_SUB(CURDATE(), INTERVAL 1 DAY);
DATEDIFF(d1, d2) – 计算日期d1和d2相差的天数
SELECT DATEDIFF('2020-01-10', '2020-01-02');
DATE_FORMAT(d, format) – 格式化日期
SELECT DATE_FORMAT(NOW(), '%Y-%m-%d');
UNIX_TIMESTAMP() – 返回时间戳
SELECT UNIX_TIMESTAMP(NOW());
FROM_UNIXTIME() – 将时间戳格式化为时间
SELECT FROM_UNIXTIME(1595323516, '%Y-%m-%d %H:%m:%s');
DATE_FORMAT
和 FROM_UNIXTIME
的区别在于,DATE_FORMAT
的第一个参数为日期,FROM_UNIXTIME
的第一个参数为时间戳。
备注:示例中用到的表和数据可以通过链接(https://github.com/songw/sql)下载。
本系列目录:零基础入门 SQL 系列之(一)查询数据
零基础入门 SQL 系列之(二)排序
零基础入门 SQL 系列之(三)过滤数据
零基础入门 SQL 系列之(四)内置函数
零基础入门 SQL 系列之(五)数据汇总
零基础入门 SQL 系列之(六)表连接
零基础入门 SQL 系列之(七)组合
零基础入门 SQL 系列之(八)插入、更新、删除
零基础入门 SQL 系列之(九)创建和操作表
零基础入门 SQL 系列之(十)视图