目录
一、日期函数
函数 | 说明 |
current_date() | 返回当前日期 |
current_time() | 返回当前时间 |
current_timestamp() | 返回当前时间戳 |
date(datetime) | 返回参数datetime的日期部分 |
now() | 返回当前日期时间 |
date_add(date, interval xxx) | 在date中添加日期或时间 date可以是日期、时间、日期时间 xxx可以是year、day、minute、second |
date_sub(date,interval xxx year/day/minute/second) | 在date中减去日期或时间 xxx可以是year、day、minute、second |
datediff(date1,date2) | 返回两个日期时间差,单位是天 date1 - date2 |
案例1:创建一张表,记录生日,添加当前日期
create table tmp(
-> id int primary key auto_increment,
-> birthday date not null);
insert into tmp(birthday) values(now());
案例2:创建一个留言表,并插入数据
create table msg(
-> id int primary key auto_increment,
-> content varchar(30) not null,
-> sendtime datetime);
insert into msg(content,sendtime) values('向着幸福出发!',now());
insert into msg(content,sendtime) values('珍惜眼前人!',now());
显示所有留言信息,发布日期只显示日期,不用显示时间
select content,date(sendtime) from msg;
查询在
2
分钟内发布的帖子
select * from msg where sendtime>date_sub(now(),interval 2 minute);
select * from msg where date_add(sendtime,interval 2 minute)>now();
二、字符串函数
注意:这些函数并没有修改原始数据,修改的是临时数据并将其显示出来
函数 | 说明 |
charset(str) | 返回字符串字符集 |
concat(string1,......) | 连接字符串 |
instr(string,substring) | 返回substring在string中出现的位置(起始下标为1) |
ucase(string) | 转换为大写 |
lcase(string) | 转换为小写 |
left(string,length) | 返回从左开始向string中取length个字符串 |
length(string) | 返回字符串string的长度(汉字1个字节=3个字符) |
replace(str,search_str,replace_str) | 在str中用replace_str替换search_str |
strcmp(string1,string2) | 逐字符比较string1和string2 |
substring(str,position,[,length]) | 从字符串str中的position位置截取length个字符 |
ltrim(string),trim(string),rtrim(string) | ltrim去除前空格 trim去除前后空格 rtrim去除后空格 |
获取exam_result
表的name
列的字符集
select charset(name) from exam_result;
要求显示
exam_result
表中的信息,显示格式:
“XXX
的语文是
XXX
分,数学
XXX
分,英语
XXX
分
”
select concat(name,'的语文',chinese,'分,','数学',math,'分,','英语',english,'分') from exam_result;
求学生表中学生姓名占用的字节数
select name,length(name) from student;
将student
表中所有名字中有'周'
的替换成'Z
'
select replace(name,'周','Z') from student;
截取student
表中
name
字段的第二个到第三个字符
select substring(name,2,2) from student;
以首字母小写的方式显示所有员工的姓名
select concat(lcase(leftstring(ename,1)),substring(ename,2)) from EMP;
三、数学函数
函数名称 | 说明 |
abs(number) | 绝对值函数 |
bin(decimal_number) | 十进制数转二进制 |
hex(decimal_number) | 十进制数转十六进制 |
conv(number,from_base,to_base) | 指定进制数转换为另一指定进制数 |
ceiling(number) | 向上取整(取更大的数) |
floor(number) | 向下取整(取更小的数) |
fromat(number,decimal_places) | 格式化数据,保留decimal_places位小数,小数四舍五入 |
rand() | 生成随机浮点数,范围是[0.0,1.0) |
mod(number,denominator) | 取模,求余数 |
绝对值
select abs(-3.14);//3.14
向上取整
select ceiling(4.14);//5
select ceiling(-3.14);//-3
向下取整
select floor(-23.7);//-24
保留
2
位小数位数(小数四舍五入
)
select format(12.3456,2);//12.35
产生随机数
select rand();
四、其他函数
1.user()查询当前用户
select user();
2.datebase()显示当前正在使用的数据库
select database();
3.md5(str)对一个字符串进行摘要,摘要后得到一个32位字符串。通常用于对密码进行加密,检查密码是否正确时,同样需要对输入的密码进行md5摘要,摘要结果相同密码正确。
select md5('123456789');
![](https://i-blog.csdnimg.cn/direct/42a81b02167448c4ac343c26b18dec45.png)
4.password(str)对密码进行加密
select password('123456789');
5.ifnull(val1,val2) 如果val1为null,返回val2;否则返回val1
select ifnull('123','abc');
select ifnull(null,'abc');