文章目录 1 日期函数 日期函数示例 日期函数案例 案例-1:创建表记录生日 案例-2:创建留言表并查询指定条件数据 2 字符串函数 3 数学函数 4 其它函数
1 日期函数
函数名称 描述 current_date() 当前日期 current_time() 当前时间 current_timestamp() 当前时间戳 date(datetime) 返回datetime参数的日期部分 date_add(date, interval d_value_type) 在date中添加日期或时间,interval后的数值单位可以是:year、minute、second、day date_sub(date, interval d_value_type) 在date中减去日期或时间,interval后的数值单位可以是:year、minute、second、day datediff(date1, date2) 两个日期的差,单位是天(date1减去date2) now() 当前日期时间
日期函数示例
获得年月日:
mysql> select current_date ( ) ;
+
| current_date ( ) |
+
| 2025 - 10 - 25 |
+
1 row in set ( 0.00 sec)
获得时分秒:
mysql> select current_time ( ) ;
+
| current_time ( ) |
+
| 11 :51 :50 |
+
1 row in set ( 0.00 sec)
获得时间戳:
mysql> select current_timestamp ( ) ;
+
| current_timestamp ( ) |
+
| 2025 - 10 - 25 11 :52 :13 |
+
1 row in set ( 0.00 sec)
在日期的基础上加日期:
mysql> select date_add( '2017-10-28' , interval 10 day ) ;
+
| date_add( '2017-10-28' , interval 10 day ) |
+
| 2017 - 11 - 07 |
+
1 row in set ( 0.00 sec)
在日期的基础上减去时间:
mysql> select date_sub( '2017-10-1' , interval 2 day ) ;
+
| date_sub( '2017-10-1' , interval 2 day ) |
+
| 2017 - 09 - 29 |
+
1 row in set ( 0.00 sec)
计算两个日期之间相差的天数:(这里注意是date1-date2!)
mysql> select datediff( '2017-10-10' , '2016-9-1' ) ;
+
| datediff( '2017-10-10' , '2016-9-1' ) |
+
| 404 |
+
1 row in set ( 0.00 sec)
日期函数案例
案例-1:创建表记录生日
mysql> create table tmp(
id int primary key auto_increment ,
birthday date
) ;
mysql> insert into tmp( birthday) values ( current_date ( ) ) ;
mysql> select * from tmp;
+
| id | birthday |
+
| 1 | 2025 - 10 - 25 |
+
1 row in set ( 0.00 sec)
案例-2:创建留言表并查询指定条件数据
mysql> create table msg (
id int primary key auto_increment ,
content varchar ( 30 ) not null ,
sendtime datetime
) ;
mysql> insert into msg( content, sendtime) values ( 'hello1' , now ( ) ) ;
mysql> insert into msg( content, sendtime) values ( 'hello2' , now ( ) ) ;
mysql> select content, date ( sendtime) from msg;
+
| content | date ( sendtime) |
+
| hello1 | 2025 - 10 - 25 |
| hello2 | 2025 - 10 - 25 |
+
2 rows in set ( 0.01 sec)
mysql> select * from msg where date_add( sendtime, interval 2 minute ) > now ( ) ;
2 字符串函数
函数名称 描述 charset(str) 返回字符串字符集 concat(string2 [, …]) 连接字符串 instr(string, substring) 返回substring在string中第一次出现的位置,没有则返回0,下标从1开始 ucase(string2) 转换成大写 lcase(string2) 转换成小写 left(string2, length) 从string2的左边起取length个字符 right(string2, length) 从string2的右边起取length个字符 length(string) 返回string的长度(以字节为单位:字母/数字占1字节,中文占多字节,与字符集相关) replace(str, search_str, replace_str) 在str中用replace_str替换所有的search_str strcmp(string1, string2) 逐字符比较两字符串大小(按字符的ASCII码值比较) substring(str, position [, length]) 从str的position位置开始(position从1开始),取length个字符 ltrim(string)、rtrim(string)、trim(string) 分别去除字符串的前空格、后空格、前后空格
字符串函数案例
获取emp表的ename列的字符集:
mysql> select charset ( ename) from EMP;
+
| charset ( ename) |
+
| utf8mb4 |
+
14 rows in set ( 0.00 sec)
按指定格式显示学生分数(连接字符串):
select concat( name, '的语文是' , chinese, '分,数学是' , math, '分' ) as '分数' from student;
求学生姓名占用的字节数:
select length( name) , name from student;
替换字符串中的指定内容:
select replace ( ename, 'S' , '上海' ) , ename from EMP;
截取字符串:
select substring( ename, 2 , 2 ) , ename from EMP;
select right ( ename, 2 ) , ename from EMP;
转换字符大小写并拼接:
select concat( lcase ( substring( ename, 1 , 1 ) ) , substring( ename, 2 ) ) from EMP;
3 数学函数
函数名称 描述 abs(number) 绝对值函数 bin(decimal_number) 将十进制数转换为二进制字符串 hex(decimalNumber) 将十进制数转换为十六进制字符串 conv(number, from_base, to_base) 进制转换(将number从from_base进制转换为to_base进制) ,可以替代上面的进制转换函数ceiling(number) 向上去整(如3.1→4,-3.1→-3) floor(number) 向下去整(如3.7→3,-3.1→-4) format(number, decimal_places) 格式化数字,保留decimal_places位小数(小数部分四舍五入) rand() 返回随机浮点数,范围为[0.0, 1.0) mod(number, denominator) 取模(求余),结果与number的符号一致(如mod(7,3)=1,mod(-7,3)=-1)
数学函数示例
求绝对值:
mysql> select abs( - 100.2 ) ;
+
| abs( - 100.2 ) |
+
| 100.2 |
+
1 row in set ( 0.00 sec)
向上取整:
mysql> select ceiling( 23.04 ) ;
+
| ceiling( 23.04 ) |
+
| 24 |
+
1 row in set ( 0.00 sec)
向下取整:
mysql> select floor( 23.7 ) ;
+
| floor( 23.7 ) |
+
| 23 |
+
1 row in set ( 0.00 sec)
格式化数字(保留2位小数):
mysql> select format ( 12.3456 , 2 ) ;
+
| format ( 12.3456 , 2 ) |
+
| 12.35 |
+
1 row in set ( 0.00 sec)
生成随机数:
mysql> select rand( ) ;
+
| rand( ) |
+
| 0.14119383333362065 |
+
1 row in set ( 0.00 sec)
进制转换:
mysql> select bin( 10 ) ;
+
| bin( 10 ) |
+
| 1010 |
+
1 row in set ( 0.00 sec)
mysql> select hex( 10 ) ;
+
| hex( 10 ) |
+
| A |
+
1 row in set ( 0.00 sec)
mysql> select conv( 1010 , 2 , 8 ) ;
+
| conv( 1010 , 2 , 8 ) |
+
| 12 |
+
1 row in set ( 0.00 sec)
取模(求余):
mysql> select mod ( 7 , 3 ) , mod ( - 7 , 3 ) ;
+
| mod ( 7 , 3 ) | mod ( - 7 , 3 ) |
+
| 1 | - 1 |
+
1 row in set ( 0.00 sec)
4 其它函数
函数名称 描述 user() 查询当前登录的MySQL用户(格式为“用户名@登录主机”) md5(str) 对字符串str进行MD5摘要,生成32位十六进制字符串(常用于密码加密存储) database() 显示当前正在使用的数据库 password() MySQL用于对用户密码进行加密 的函数(生成41位加密字符串,仅用于用户认证) ifnull(val1, val2) 判断val1是否为null:若val1为null,返回val2;否则返回val1的值
其它函数示例
查询当前用户:
select user ( ) ;
MD5摘要加密:
select md5( 'admin' ) ;
显示当前使用的数据库:
select database ( ) ;
用户密码加密:
select password( 'root' ) ;
处理null值:
select ifnull( 'abc' , '123' ) ;
select ifnull( null , '123' ) ;