ni## 一、日期函数
1.current_date():获取年月日
mysql> select current_date();
+
| current_date() |
+
| 2022-06-07 |
+
1 row in set (0.00 sec)
2.current_time():获取时分秒
mysql> select current_time();
+
| current_time() |
+
| 18:14:40 |
+
1 row in set (0.00 sec)
3.current_timestamp():获取时间戳
mysql> select current_timestamp();
+
| current_timestamp() |
+
| 2022-06-07 18:16:15 |
+
1 row in set (0.00 sec)
4.date_add():可以添加日期或时间
mysql> select date_add('2022-6-7',interval 10 day);
+
| date_add('2022-6-7',interval 10 day) |
+
| 2022-06-17 |
+
1 row in set (0.00 sec)
5.date_sub():减去日期或时间
mysql> select date_sub('2022-6-7',interval 10 day);
+
| date_sub('2022-6-7',interval 10 day) |
+
| 2022-05-28 |
+
1 row in set (0.00 sec)
mysql> select date_sub('2022-6-7',interval -10 day);
+
| date_sub('2022-6-7',interval -10 day) |
+
| 2022-06-17 |
+
1 row in set (0.00 sec)
6.date_diff():统计时间差
mysql> select datediff('2022-1-1','2022-1-10');
+
| datediff('2022-1-1','2022-1-10') |
+
| -9 |
+
1 row in set (0.00 sec)
7.now():当前日期时间(和时间戳获得一样结果)
mysql> select now();
+
| now() |
+
| 2022-06-07 18:26:22 |
+
1 row in set (0.00 sec)
8.实例
建立的表
mysql> desc msg;
+
| Field | Type | Null | Key | Default | Extra |
+
| id | int(11) | NO | PRI | NULL | auto_increment |
| nick_name | varchar(20) | NO | | NULL | |
| content | varchar(30) | YES | | 没有任何留言 | |
| sendtime | datetime | YES | | NULL | |
+
4 rows in set (0.00 sec)
(1)留言的时间:当前时间,只显示日期,只显示时间
mysql> select *from msg;
+
| id | nick_name | content | sendtime |
+
| 1 | 会飞的猪 | 这个小孩好可爱 | 2022-06-08 12:46:42 |
| 2 | 爬树的狗 | 这个小孩好可爱呀 | 2022-06-08 12:47:39 |
+
2 rows in set (0.00 sec)
mysql> select content,sendtime from msg;
+
| content | sendtime |
+
| 这个小孩好可爱 | 2022-06-08 12:46:42 |
| 这个小孩好可爱呀 | 2022-06-08 12:47:39 |
+
2 rows in set (0.00 sec)
mysql> select content,date(sendtime) from msg;
+
| content | date(sendtime) |
+
| 这个小孩好可爱 | 2022-06-08 |
| 这个小孩好可爱呀 | 2022-06-08 |
+
2 rows in set (0.00 sec)
mysql> select content,time(sendtime) from msg;
+
| content | time(sendtime) |
+
| 这个小孩好可爱 | 12:46:42 |
| 这个小孩好可爱呀 | 12:47:39 |
+
2 rows in set (0.00 sec)
(2)显示两分钟以前发布的贴子(即:now() <= sendtime + 2min)
mysql> select * from msg where date_add(sendtime,interval 2 minute) < now();
+
| id | nick_name | content | sendtime |
+
| 1 | 会飞的猪 | 这个小孩好可爱 | 2022-06-08 12:46:42 |
| 2 | 爬树的狗 | 这个小孩好可爱呀 | 2022-06-08 12:47:39 |
| 3 | 小猪佩奇 | 世上无难事 | 2022-06-08 12:56:46 |
| 4 | 小黄鸭 | 只怕有心人 | 2022-06-08 12:57:07 |
+
4 rows in set (0.00 sec)
(3)两分钟以内发布的贴子(即:now() <= sendtime + 2min)
mysql> select * from msg where date_add(sendtime,interval 2 minute) >= now();
+
| id | nick_name | content | sendtime |
+
| 5 | 小黄鸭 | 加油 | 2022-06-08 13:02:26 |
| 6 | 小黄鸭 | 冲呀 | 2022-06-08 13:02:37 |
+
2 rows in set (0.01 sec)
二、字符串函数
1.charset(str):查询某一列的字符串字符集
mysql> select charset(nick_name) from msg;
+
| charset(nick_name) |
+
| utf8 |
| utf8 |
| utf8 |
| utf8 |
| utf8 |
| utf8 |
+
6 rows in set (0.00 sec)
2.concat():连接字符串
如:要求显示student表中的信息,显示格式:“XXX的语文是XXX分,数学XXX分,英语XXX分”
mysql> select *from exam_result;
+
| id | name | chinese | math | english |
+
| 3 | 猪悟能 | 176 | 98 | 90 |
| 4 | 曹孟德 | 140 | 90 | 67 |
| 6 | 孙权 | 140 | 73 | 78 |
| 8 | 孙悟空 | 87 | 98 | 95 |
+
4 rows in set (0.00 sec)
mysql> select concat(name,'的语文成绩是',chinese,'分','数学成绩是',math,'分','英语成绩是',english,'分') 成绩概览 from exam_result;
+
| 成绩概览 |
+
| 猪悟能的语文成绩是176分数学成绩是98分英语成绩是90分 |
| 曹孟德的语文成绩是140分数学成绩是90分英语成绩是67分 |
| 孙权的语文成绩是140分数学成绩是73分英语成绩是78分 |
| 孙悟空的语文成绩是87分数学成绩是98分英语成绩是95分 |
+
4 rows in set (0.00 sec)
3.length(str):求字符串所占的字节数
一个汉字3字节
mysql> select name,length(name) from exam_result;
+
| name | length(name) |
+
| 猪悟能 | 9 |
| 曹孟德 | 9 |
| 孙权 | 6 |
| 孙悟空 | 9 |
+
4 rows in set (0.00 sec)
4.replace(str,s1,s2):str中的s1换成s2
如:将表中所有名字中有S的替换成’上海’
mysql> select name,replace(name,'S','上海') from exam_result;
+
| name | replace(name,'S','上海') |
+
| 猪悟能 | 猪悟能 |
| 曹孟德 | 曹孟德 |
| 孙权 | 孙权 |
| 孙悟空 | 孙悟空 |
| S关 | 上海关 |
| 可爱S | 可爱上海 |
+
6 rows in set (0.00 sec)
mysql> select replace('sxl','l','玲');
+
| replace('sxl','l','玲') |
+
| sx玲 |
+
1 row in set (0.00 sec)
5.substring(str,position,[长度]):截取字符串
mysql> select substring('abcdefg',3);
+
| substring('abcdefg',3) |
+
| cdefg |
+
1 row in set (0.00 sec)
mysql> select substring('abcdefg',3,2);
+
| substring('abcdefg',3,2) |
+
| cd |
+
1 row in set (0.00 sec)
mysql> select substring(name,2,1),name from exam_result;
+
| substring(name,2,1) | name |
+
| 悟 | 猪悟能 |
| 孟 | 曹孟德 |
| 权 | 孙权 |
| 悟 | 孙悟空 |
| 关 | S关 |
| 爱 | 可爱S |
+
6 rows in set (0.00 sec)
6.ucase(str):转换成大写字母
mysql> select ucase('abcd');
+
| ucase('abcd') |
+
| ABCD |
+
1 row in set (0.00 sec)
7,lcase(str):转换成小写字母
mysql> select lcase('ABCD');
+
| lcase('ABCD') |
+
| abcd |
+
1 row in set (0.00 sec)
把名字的首字母转换成小写
8.综合运用
把名字首字母改为小写字母 步骤:(1)先把首字母和后面字符串分离 (2)把首字母变为小写字母 (3)连接字符串
mysql> select substring(name,1,1),substring(name,2),name from exam_result;
+
| substring(name,1,1) | substring(name,2) | name |
+
| 猪 | 悟能 | 猪悟能 |
| 曹 | 孟德 | 曹孟德 |
| 孙 | 权 | 孙权 |
| 孙 | 悟空 | 孙悟空 |
| S | 关 | S关 |
| 可 | 爱S | 可爱S |
| M | ARY | MARY |
| B | OB | BOB |
+
8 rows in set (0.00 sec)
mysql> select lcase(substring(name,1,1)),substring(name,2),name from exam_result;
+
| lcase(substring(name,1,1)) | substring(name,2) | name |
+
| 猪 | 悟能 | 猪悟能 |
| 曹 | 孟德 | 曹孟德 |
| 孙 | 权 | 孙权 |
| 孙 | 悟空 | 孙悟空 |
| s | 关 | S关 |
| 可 | 爱S | 可爱S |
| m | ARY | MARY |
| b | OB | BOB |
+
8 rows in set (0.00 sec)
mysql> select concat(lcase(substring(name,1,1)),substring(name,2)),name from exam_result;
+
| concat(lcase(substring(name,1,1)),substring(name,2)) | name |
+
| 猪悟能 | 猪悟能 |
| 曹孟德 | 曹孟德 |
| 孙权 | 孙权 |
| 孙悟空 | 孙悟空 |
| s关 | S关 |
| 可爱S | 可爱S |
| mARY | MARY |
| bOB | BOB |
+
8 rows in set (0.00 sec)
把名字首字母变为大写,其余小写 步骤:(1)先分离首字母与后面的字符串 (2)把首字母变为大写,后面字符变为小写 (3)连接字符串
mysql> select substring(name,1,1),substring(name,2),name from exam_result;
+
| substring(name,1,1) | substring(name,2) | name |
+
| 猪 | 悟能 | 猪悟能 |
| 曹 | 孟德 | 曹孟德 |
| 孙 | 权 | 孙权 |
| 孙 | 悟空 | 孙悟空 |
| S | 关 | S关 |
| 可 | 爱S | 可爱S |
| M | ARY | MARY |
| B | OB | BOB |
| l | ily | lily |
| l | ucy | lucy |
+
10 rows in set (0.00 sec)
mysql> select ucase(substring(name,1,1)),substring(name,2),name from exam_result;
+
| ucase(substring(name,1,1)) | substring(name,2) | name |
+
| 猪 | 悟能 | 猪悟能 |
| 曹 | 孟德 | 曹孟德 |
| 孙 | 权 | 孙权 |
| 孙 | 悟空 | 孙悟空 |
| S | 关 | S关 |
| 可 | 爱S | 可爱S |
| M | ARY | MARY |
| B | OB | BOB |
| L | ily | lily |
| L | ucy | lucy |
+
10 rows in set (0.00 sec)
mysql> select concat(ucase(substring(name,1,1)),substring(name,2)),name from exam_result;
+
| concat(ucase(substring(name,1,1)),substring(name,2)) | name |
+
| 猪悟能 | 猪悟能 |
| 曹孟德 | 曹孟德 |
| 孙权 | 孙权 |
| 孙悟空 | 孙悟空 |
| S关 | S关 |
| 可爱S | 可爱S |
| MARY | MARY |
| BOB | BOB |
| Lily | lily |
| Lucy | lucy |
+
10 rows in set (0.00 sec)
mysql> select concat(ucase(substring(name,1,1)),lcase(substring(name,2))),name from exam_rresult;
+
| concat(ucase(substring(name,1,1)),lcase(substring(name,2))) | name |
+
| 猪悟能 | 猪悟能 |
| 曹孟德 | 曹孟德 |
| 孙权 | 孙权 |
| 孙悟空 | 孙悟空 |
| S关 | S关 |
| 可爱s | 可爱S |
| Mary | MARY |
| Bob | BOB |
| Lily | lily |
| Lucy | lucy |
+
10 rows in set (0.00 sec)
9.instr(str,substr):substr在str中首次出现的位置
mysql> select instr('sxlyiding','ly');
+
| instr('sxlyiding','ly') |
+
| 3 |
+
1 row in set (0.00 sec)
10,left(str,length):str从左边起取length个字符
mysql> select left(name,2),name from exam_result;
+
| left(name,2) | name |
+
| 猪悟 | 猪悟能 |
| 曹孟 | 曹孟德 |
| 孙权 | 孙权 |
| 孙悟 | 孙悟空 |
| S关 | S关 |
| 可爱 | 可爱S |
| MA | MARY |
| BO | BOB |
| li | lily |
| lu | lucy |
+
10 rows in set (0.00 sec)
11.strcmp(str1,str2):逐字符比较大小
str1 > str2 : 返回1 str1 < str2:返回-1 str1 == str2:返回0(不分大小写)
mysql> select strcmp('ccc','bcc');
+
| strcmp('ccc','bcc') |
+
| 1 |
+
1 row in set (0.00 sec)
mysql> select strcmp('acc','bcc');
+
| strcmp('acc','bcc') |
+
| -1 |
+
1 row in set (0.00 sec)
mysql> select strcmp('acc','Acc');
+
| strcmp('acc','Acc') |
+
| 0 |
+
1 row in set (0.00 sec)
12.trim(str):去除前空格或后空格
ltrim(str):去除左空格
rtrim(str):去除右空格
mysql> select trim(' sxl ');
+
| trim(' sxl ') |
+
| sxl |
+
1 row in set (0.00 sec)
mysql> select rtrim(' a ') ret;
+
| ret |
+
| a |
+
1 row in set (0.00 sec)
mysql> select ltrim(' a ') ret;
+
| ret |
+
| a |
+
1 row in set (0.00 sec)
mysql> select trim(' a ') ret;
+
| ret |
+
| a |
+
1 row in set (0.00 sec)
三、数学函数
1.abs(num):绝对值
mysql> select abs(-123);
+
| abs(-123) |
+
| 123 |
+
1 row in set (0.00 sec)
2.ceiling(num):向上取整
floor(num):向下取整
mysql> select ceiling(12.3);
+
| ceiling(12.3) |
+
| 13 |
+
1 row in set (0.00 sec)
mysql> select floor(12.3);
+
| floor(12.3) |
+
| 12 |
+
1 row in set (0.00 sec)
3.:format(num,n):保留小数位数,会四舍五入
mysql> select format(2.14,1);
+
| format(2.14,1) |
+
| 2.1 |
+
1 row in set (0.00 sec)
mysql> select format(2.15,1);
+
| format(2.15,1) |
+
| 2.2 |
+
1 row in set (0.00 sec)
mysql> select format(2.5,0);
+
| format(2.5,0) |
+
| 3 |
+
1 row in set (0.00 sec)
mysql> select format(-3.6,0);
+
| format(-3.6,0) |
+
| -4 |
+
1 row in set (0.00 sec)
4.bin(num):十进制转二进制
mysql> select bin(10);
+
| bin(10) |
+
| 1010 |
+
1 row in set (0.00 sec)
5.hex(num):转换成十六进制
mysql> select hex(15);
+
| hex(15) |
+
| F |
+
1 row in set (0.00 sec)
6.mod(num1,num2):取模
mysql> select mod(10,3);
+
| mod(10,3) |
+
| 1 |
+
1 row in set (0.00 sec)
四、其它函数
1.user():查询当前用户
mysql> select user();
+
| user() |
+
| root@localhost |
+
1 row in set (0.00 sec)
2.md5(str):对字符串进行摘要,得到一个32位的定长字符串(匿文,应用:密码的展现)
mysql> select md5('abc');
+
| md5('abc') |
+
| 900150983cd24fb0d6963f7d28e17f72 |
+
1 row in set (0.00 sec)
3.database():查看当前使用的数据库
mysql> select database();
+
| database() |
+
| db1 |
+
1 row in set (0.00 sec)
4.password():MySQL数据库使用该函数对用户加密
mysql> select password('123');
+
| password('123') |
+
| *23AE809DDACAF96AF0FD78ED04B6A265E05AA257 |
+
1 row in set (0.00 sec)
5.ifnull(val1,val2):如果val1为null,返回val2,否则返回val1的值
mysql> select ifnull('abc','123');
+
| ifnull('abc','123') |
+
| abc |
+
1 row in set (0.00 sec)
mysql> select ifnull(null,'123');
+
| ifnull(null,'123') |
+
| 123 |
+
1 row in set (0.00 sec)
|