✨✨ 欢迎大家来到小伞的大讲堂✨✨
🎈🎈养成好习惯,先赞后看哦~🎈🎈
所属专栏:MySQL**
小伞的主页:xiaosan_blog**gitee:************************************************************许星让 (xu-xingrang) - Gitee.com****************************************************************
制作不易!点个赞吧!!谢谢喵!!
1.日期函数

1.1 获取日期函数
bash
获得年月日
mysql> select current_date();
+----------------+
| current_date() |
+----------------+
| 2026-03-18 |
+----------------+
1 row in set (0.00 sec)
获得时分秒
mysql> select current_time();
+----------------+
| current_time() |
+----------------+
| 18:07:07 |
+----------------+
1 row in set (0.00 sec)
获得时间戳
mysql> select current_timestamp();
+---------------------+
| current_timestamp() |
+---------------------+
| 2026-03-18 18:07:17 |
+---------------------+
1 row in set (0.00 sec)
获取datetime参数的日期部分
mysql> select date(current_timestamp());
+---------------------------+
| date(current_timestamp()) |
+---------------------------+
| 2026-03-18 |
+---------------------------+
1 row in set (0.00 sec)
1.2 日期计算
bash
日期的基础上加上时间
mysql> select date_add('2020-10-10',interval 10 day);
+----------------------------------------+
| date_add('2020-10-10',interval 10 day) |
+----------------------------------------+
| 2020-10-20 |
+----------------------------------------+
1 row in set (0.00 sec)
日期的基础上减去时间
mysql> select date_sub('2020-10-10',interval 10 day);
+----------------------------------------+
| date_sub('2020-10-10',interval 10 day) |
+----------------------------------------+
| 2020-09-30 |
+----------------------------------------+
1 row in set (0.00 sec)
获取日期之间相差多少
mysql> select datediff('2020-10-10','2019-10-10');
+-------------------------------------+
| datediff('2020-10-10','2019-10-10') |
+-------------------------------------+
| 366 |
+-------------------------------------+
1 row in set (0.00 sec)
案例1:
注意current_time插入date类型的参数时,会转变成当前日期
bash
mysql> insert into tmp(birthday) values(current_date());
Query OK, 1 row affected (0.00 sec)
mysql> insert into tmp(birthday) values(current_time());
Query OK, 1 row affected, 1 warning (0.00 sec)
mysql> select * from tmp;
+----+------------+
| id | birthday |
+----+------------+
| 1 | 2026-03-18 |
| 2 | 2026-03-18 |
+----+------------+
2 rows in set (0.00 sec)
案例2:
我们发留言时,我们的评论会附带显示日期
bash
创建留言
mysql> create table msg(
-> id int primary key auto_increment,
-> content varchar(30) not null,
-> sendtime datetime);
Query OK, 0 rows affected (0.00 sec)
mysql> insert into msg(content,sendtime) values('hello1', now());
Query OK, 1 row affected (0.00 sec)
mysql> insert into msg(content,sendtime) values('hello2', now());
Query OK, 1 row affected (0.00 sec)
mysql> select * from msg;
+----+---------+---------------------+
| id | content | sendtime |
+----+---------+---------------------+
| 1 | hello1 | 2026-03-18 18:20:07 |
| 2 | hello2 | 2026-03-18 18:20:10 |
+----+---------+---------------------+
2 rows in set (0.00 sec)
查询两分钟内的留言
mysql> select * from msg where date_add(sendtime,interval 2 minute) > now();
+----+---------+---------------------+
| id | content | sendtime |
+----+---------+---------------------+
| 1 | hello1 | 2026-03-18 18:20:07 |
| 2 | hello2 | 2026-03-18 18:20:10 |
+----+---------+---------------------+
2 rows in set (0.00 sec)
2. 字符串函数

2.1 charset 返回字符串字符集
bash
mysql> select charset(name) from students;
+---------------+
| charset(name) |
+---------------+
| utf8 |
| utf8 |
| utf8 |
| utf8 |
+---------------+
4 rows in set (0.00 sec)
2.2 concat连接字符串
bash
mysql> select concat(name,'的语文是',chinese,'分,数学是',math,'分,英语是',english,'分') as '分数' from exam_result;
+-----------------------------------------------------------+
| 分数 |
+-----------------------------------------------------------+
| 唐三藏的语文是67分,数学是98分,英语是56分 |
| 猪悟能的语文是88分,数学是98分,英语是90分 |
| 曹孟德的语文是70分,数学是90分,英语是67分 |
| 刘玄德的语文是55分,数学是115分,英语是45分 |
| 孙权的语文是70分,数学是73分,英语是78分 |
| 宋公明的语文是75分,数学是95分,英语是30分 |
+-----------------------------------------------------------+
6 rows in set (0.00 sec)
2.3 length计算string的长度
bash
mysql> select length(name) ,name from exam_result;
+--------------+-----------+
| length(name) | name |
+--------------+-----------+
| 9 | 唐三藏 |
| 9 | 猪悟能 |
| 9 | 曹孟德 |
| 9 | 刘玄德 |
| 6 | 孙权 |
| 9 | 宋公明 |
+--------------+-----------+
6 rows in set (0.00 sec)
注意:**length函数返回字符串长度,以字节为单位。**如果是多字节字符则计算多个字节数;如果是单字节字符则算作一个字节。比如:字母,数字算作一个字节,中文表示多个字节数(与字符集编码有关)
2.4 replace替换字符
bash
mysql> select * from emp;
+--------+--------+-----------+------+---------------------+---------+---------+--------+
| empno | ename | job | mgr | hiredate | sal | comm | deptno |
+--------+--------+-----------+------+---------------------+---------+---------+--------+
| 007369 | SMITH | CLERK | 7902 | 1980-12-17 00:00:00 | 800.00 | NULL | 20 |
| 007499 | ALLEN | SALESMAN | 7698 | 1981-02-20 00:00:00 | 1600.00 | 300.00 | 30 |
| 007521 | WARD | SALESMAN | 7698 | 1981-02-22 00:00:00 | 1250.00 | 500.00 | 30 |
| 007566 | JONES | MANAGER | 7839 | 1981-04-02 00:00:00 | 2975.00 | NULL | 20 |
| 007654 | MARTIN | SALESMAN | 7698 | 1981-09-28 00:00:00 | 1250.00 | 1400.00 | 30 |
| 007698 | BLAKE | MANAGER | 7839 | 1981-05-01 00:00:00 | 2850.00 | NULL | 30 |
| 007782 | CLARK | MANAGER | 7839 | 1981-06-09 00:00:00 | 2450.00 | NULL | 10 |
| 007788 | SCOTT | ANALYST | 7566 | 1987-04-19 00:00:00 | 3000.00 | NULL | 20 |
| 007839 | KING | PRESIDENT | NULL | 1981-11-17 00:00:00 | 5000.00 | NULL | 10 |
| 007844 | TURNER | SALESMAN | 7698 | 1981-09-08 00:00:00 | 1500.00 | 0.00 | 30 |
| 007876 | ADAMS | CLERK | 7788 | 1987-05-23 00:00:00 | 1100.00 | NULL | 20 |
| 007900 | JAMES | CLERK | 7698 | 1981-12-03 00:00:00 | 950.00 | NULL | 30 |
| 007902 | FORD | ANALYST | 7566 | 1981-12-03 00:00:00 | 3000.00 | NULL | 20 |
| 007934 | MILLER | CLERK | 7782 | 1982-01-23 00:00:00 | 1300.00 | NULL | 10 |
+--------+--------+-----------+------+---------------------+---------+---------+--------+
14 rows in set (0.00 sec)
mysql> select replace(ename,'S','北京'),ename from emp;
+-----------------------------+--------+
| replace(ename,'S','北京') | ename |
+-----------------------------+--------+
| 北京MITH | SMITH |
| ALLEN | ALLEN |
| WARD | WARD |
| JONE北京 | JONES |
| MARTIN | MARTIN |
| BLAKE | BLAKE |
| CLARK | CLARK |
| 北京COTT | SCOTT |
| KING | KING |
| TURNER | TURNER |
| ADAM北京 | ADAMS |
| JAME北京 | JAMES |
| FORD | FORD |
| MILLER | MILLER |
+-----------------------------+--------+
14 rows in set (0.00 sec)
2.5 ucase与lcase转换大小写
bash
mysql> select lcase(ename),ename from emp;
+--------------+--------+
| lcase(ename) | ename |
+--------------+--------+
| smith | SMITH |
| allen | ALLEN |
| ward | WARD |
| jones | JONES |
| martin | MARTIN |
| blake | BLAKE |
| clark | CLARK |
| scott | SCOTT |
| king | KING |
| turner | TURNER |
| adams | ADAMS |
| james | JAMES |
| ford | FORD |
| miller | MILLER |
+--------------+--------+
14 rows in set (0.00 sec)
mysql> select ucase(lcase(ename)),ename from emp;
+---------------------+--------+
| ucase(lcase(ename)) | ename |
+---------------------+--------+
| SMITH | SMITH |
| ALLEN | ALLEN |
| WARD | WARD |
| JONES | JONES |
| MARTIN | MARTIN |
| BLAKE | BLAKE |
| CLARK | CLARK |
| SCOTT | SCOTT |
| KING | KING |
| TURNER | TURNER |
| ADAMS | ADAMS |
| JAMES | JAMES |
| FORD | FORD |
| MILLER | MILLER |
+---------------------+--------+
14 rows in set (0.00 sec)
2.6 substring 截取length个字符
bash
以首字母小写的方式显示所有员工的姓名
mysql> select concat(lcase(substring(ename,1,1)),substring(ename,2)) ,ename from emp;
+--------------------------------------------------------+--------+
| concat(lcase(substring(ename,1,1)),substring(ename,2)) | ename |
+--------------------------------------------------------+--------+
| sMITH | SMITH |
| aLLEN | ALLEN |
| wARD | WARD |
| jONES | JONES |
| mARTIN | MARTIN |
| bLAKE | BLAKE |
| cLARK | CLARK |
| sCOTT | SCOTT |
| kING | KING |
| tURNER | TURNER |
| aDAMS | ADAMS |
| jAMES | JAMES |
| fORD | FORD |
| mILLER | MILLER |
+--------------------------------------------------------+--------+
14 rows in set (0.00 sec)
2.7 ltrim、trim、rtrim去除前后空格
bash
mysql> select ltrim(' hello! ') ltrim,trim(' hello! ') trim , rtrim(' hello! ') rtrim;
+---------------+--------+---------------+
| ltrim | trim | rtrim |
+---------------+--------+---------------+
| hello! | hello! | hello! |
+---------------+--------+---------------+
1 row in set (0.00 sec)
3. 数学函数

3.1 abs绝对值
bash
mysql> select abs(-1),abs(1.1);
+---------+----------+
| abs(-1) | abs(1.1) |
+---------+----------+
| 1 | 1.1 |
+---------+----------+
1 row in set (0.00 sec)
3.2 bin、hex进制的转换
bash
mysql> select bin(10),hex(10);
+---------+---------+
| bin(10) | hex(10) |
+---------+---------+
| 1010 | A |
+---------+---------+
1 row in set (0.00 sec)
3.3 conv任意进制的转换
bash
mysql> select conv(10,10,2);
+---------------+
| conv(10,10,2) |
+---------------+
| 1010 |
+---------------+
1 row in set (0.00 sec)
mysql> select conv(10,10,16);
+----------------+
| conv(10,10,16) |
+----------------+
| A |
+----------------+
1 row in set (0.00 sec)
3.4 ceiling向上取整、floor向下取整
bash
mysql> select ceiling(23.04),floor(23.7);
+----------------+-------------+
| ceiling(23.04) | floor(23.7) |
+----------------+-------------+
| 24 | 23 |
+----------------+-------------+
1 row in set (0.00 sec)
3.5 format格式化保留小数位数
bash
mysql> select format(12.3456,2);
+-------------------+
| format(12.3456,2) |
+-------------------+
| 12.35 |
+-------------------+
1 row in set (0.00 sec)
3.6 rand产生随机数
bash
mysql> select rand();
+---------------------+
| rand() |
+---------------------+
| 0.12839327112621932 |
+---------------------+
1 row in set (0.00 sec)
0~100的随机数
mysql> select rand()*100;
+-------------------+
| rand()*100 |
+-------------------+
| 34.58598790186084 |
+-------------------+
1 row in set (0.00 sec)
3.7 mod取模求余
bash
mysql> select mod(12,3);
+-----------+
| mod(12,3) |
+-----------+
| 0 |
+-----------+
1 row in set (0.00 sec)
mysql> select mod(12,5);
+-----------+
| mod(12,5) |
+-----------+
| 2 |
+-----------+
1 row in set (0.00 sec)
4.其他函数
4.1 user查询当前用户
bash
mysql> select user();
+--------+
| user() |
+--------+
| root@ |
+--------+
1 row in set (0.00 sec)
4.2 md5
bash
mysql> create table user(
-> name varchar(20),
-> password varchar(32));
Query OK, 0 rows affected (0.00 sec)
mysql> select * from user where name = '张三'and password = md5('11111111111111');
+--------+----------------------------------+
| name | password |
+--------+----------------------------------+
| 张三 | e78582c7fa761cb9358009503f2810a9 |
+--------+----------------------------------+
1 row in set (0.00 sec)
4.3 password用户加密
bash
mysql> select password('root');
+-------------------------------------------+
| password('root') |
+-------------------------------------------+
| *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B |
+-------------------------------------------+
1 row in set, 1 warning (0.00 sec)
4.4 ifnull(val1,val2) 如果val1为null,返回val2,否则返回val1的值
bash
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)
