MySQL 内置了许多函数,包括数值函数、字符串函数以及日期函数。
# 1.数值函数
我们首先来看下常用的数值函数。 1.ABS(x) -- 返回 x 的绝对值。
SELECT ABS(-1);
运行结果如下:
SELECT ABS(1);
运行结果如下:
2.CEIL(x) -- 返回大于或等于 x 的最小整数。
SELECT ceil(1.5);
运行结果如下:
SELECT ceil(2);
运行结果如下:
3.FLOOR(x) -- 返回小于或等于 x 的最大整数。
SELECT FLOOR(1.5);
运行结果如下:
SELECT FLOOR(2);
运行结果如下:
4.RAND(x) -- 返回 0~1 之间的随机数。
SELECT RAND();
运行结果如下:
5.ROUND() -- 函数用于数据的四舍五入,它有两种形式: (1).ROUND(x, d), x 指要处理的数,d 是指保留几位小数。 (2).ROUND(x), 其实就是 ROUND(x,0), 也就是默认 d 为 0。
SELECT ROUND(5.45, 1);
运行结果如下:
SELECT ROUND(5.45);
运行结果如下:
6.TRUNCATE(x, y) -- 返回数据 x 保留到小数点后 y 位的值。
SELECT TRUNCATE(5.45, 1);
运行结果如下:
7.POWER(x, y) -- 返回 x 的 y 次方。
SELECT POWER(3, 2);
运行结果如下:
8.SQRT(x) -- 返回 x 的平方根。
SELECT SQRT(25);
运行结果如下:
9.MOD(x, y) -- 返回 x 除以 y 以后的余数。
SELECT MOD(8, 3);
运行结果如下:
# 2.字符串函数
1.TRIM(s) -- 去除字符串s首尾的空格。
SELECT TRIM(' hello world! ');
运行结果如下:
2.LTRIM(s) -- 去除字符串s首部的空格。
SELECT LTRIM(' hello world! ');
运行结果如下:
3.RTRIM(s) -- 去除字符串s尾部的空格。
SELECT RTRIM(' hello world! ');
运行结果如下:
4.UPPER(s) -- 将字符串s大写
SELECT UPPER('Hello World!');
运行结果如下:
5.LOWER(s) -- 将字符串s小写
SELECT LOWER('Hello World!');
运行结果如下:
6.LENGTH(s) -- 返回字符串s的长度
SELECT LENGTH('Hello World!');
运行结果如下:
7.LEFT(s, n) -- 返回字符串 s 的前n个字符
SELECT LEFT('Hello World!', 5);
运行结果如下:
8.RIGHT(s, n) -- 返回字符串 s 的后n个字符
SELECT RIGHT('Hello World!', 5);
运行结果如下:
9.SUBSTRING(s, n) -- 返回从字符串s中的第n个位置开始的字符串
SELECT SUBSTRING('Hello World!', 5);
运行结果如下:
10.SUBSTRING(s, n, len) -- 返回从字符串s中的第n个位置开始长度为len的字符串。
SELECT SUBSTRING('Hello World!', 5, 5);
运行结果如下:
11.CONCAT(s1, s2) -- 将字符串s1, s2等多个字符串合并为一个字符串。
SELECT CONCAT('Hello', ' World!');
运行结果如下:
# 3.日期和时间函数
1.NOW() -- 返回当前时间的日期和时间
SELECT NOW();
运行结果如下:
2.CURDATE() -- 返回当前时间的年月日
SELECT CURDATE();
运行结果如下:
3.CURTIME() -- 返回当前时间的时分秒
SELECT CURTIME();
运行结果如下:
4.YEAR(d) -- 返回d中的年份值
SELECT YEAR(NOW());
运行结果如下:
5.MONTH(d) -- 返回d中的月份值
SELECT MONTH(NOW());
运行结果如下:
6.DAY(d) -- 返回d中的天值
SELECT DAY(NOW());
运行结果如下:
7.HOUR(d) -- 返回d中的小时值
SELECT HOUR(NOW());
运行结果如下:
8.MINUTE(d) -- 返回d中的分钟值
SELECT MINUTE(NOW());
运行结果如下:
9.SECOND(d) -- 返回d中的秒值
SELECT SECOND(NOW());
运行结果如下:
10.QUARTER(d) -- 返回日期d是第几季度
SELECT QUARTER(NOW());
运行结果如下:
11.MONTHNAME(d) -- 返回d当中的月份名称
SELECT MONTHNAME(NOW());
运行结果如下:
12.DAYNAME(d) -- 返回d是星期几
SELECT DAYNAME(NOW());
运行结果如下:
13.DAYOFWEEK(d) -- 返回日期d是星期的第几天
SELECT DAYOFWEEK(NOW());
运行结果如下:
14.DAYOFMONTH(d) -- 返回日期d是本月的第几天
SELECT DAYOFMONTH(NOW());
运行结果如下:
15.DAYOFYEAR(d) -- 返回日期d是本年的第几天
SELECT DAYOFYEAR(NOW());
运行结果如下:
16.DATE_ADD(d, INTERVAL n DAY) -- 计算日期d加上n天的日期
SELECT DATE_ADD(CURDATE(), INTERVAL 1 DAY);
运行结果如下:
17.DATE_SUB(d, INTERVAL n DAY) -- 计算日期d减去n天的日期
SELECT DATE_SUB(CURDATE(), INTERVAL 1 DAY);
运行结果如下:
18.DATEDIFF(d1, d2) -- 计算日期d1和d2相差的天数
SELECT DATEDIFF('2020-01-10', '2020-01-02');
运行结果如下:
19.DATE_FORMAT(d, format) -- 格式化日期
SELECT DATE_FORMAT(NOW(), '%Y-%m-%d');
运行结果如下:
20.UNIX_TIMESTAMP() -- 返回时间戳
SELECT UNIX_TIMESTAMP(NOW());
运行结果如下:
21.FROM_UNIXTIME() -- 将时间戳格式化为时间
SELECT FROM_UNIXTIME(1595323516, '%Y-%m-%d %H:%m:%s');
运行结果如下:
DATE_FORMAT 和 FROM_UNIXTIME 的区别在于,DATE_FORMAT的第一个参数为日期,FROM_UNIXTIME的第一个参数为时间戳。
# 4.课后题
1.下列哪一个函数可以返回小于或等于 x 的最大整数?
A. ABS(x)
B. FLOOR(x)
C. CEIL(x)
D. RAND(x)
2.下列哪一个操作符可以返回字符串s的长度?
A. UPPER(s)
B. LTRIM(s)
C. LOWER(s)
D. LENGTH(s)