常见的日期函数如下:
current_date
函数
current_date函数主要用来获取当前日期:
select current_date();
current_time
函数
current_time函数主要用来获取当前的时间
select current_time();
current_time
函数
current_timestamp函数用来获取当前的时间戳,并以日期时间的格式进行显示。
select current_timestamp();
now
函数
now函数用于获取当前的日期时间。
select now();
date
函数
date函数用于获取当前的日期时间。
select date(now());
date_add
函数
date_add函数用于在日期的基础上添加日期或时间。
select date_add(current_date(),interval 10 day);
date_sub
函数
date_sub函数用于在日期的基础上减去日期或时间。
select date_sub(current_date(),interval 10 day);
datediff
函数
datediff函数用于获取两个日期的差,单位是天。
select datediff(current_date(),'2023-01-01');
综合案例
创建一个评论表,表中包含自增长主键id、昵称、评论内容和评论时间。如下:
mysql> create table comment_form(
-> nickname varchar(20) not null,
-> content varchar(50) not null,
-> sendtime datetime
-> );
Query OK, 0 rows affected (0.01 sec)
向表中插入一些数据,插入时直接通过now函数指明评论时间。
mysql> insert into comment_form (nickname,content,sendtime) values ('张三','2024继续加油!',now());
Query OK, 1 row affected (0.01 sec)
mysql> insert into comment_form (nickname,content,sendtime) values ('李四','新的一年再接再厉哦!',now());
Query OK, 1 row affected (0.01 sec)
此时再向表中插入一些新的数据,如下:
显示评论信息时,如果只想显示评论的日期而不显示评论时间,可以在查询sendtime字段时,通过date函数截取sendtime的日期部分进行显示。如下:
在显示评论时,如果要查询2分钟之内发布的评论信息,实际上就是要筛选出评论时间加上2分钟后大于当前时间的评论,这时需要同时借助date_add和now函数。
常见的字符串函数如下:
charset
函数
现有如下员工表,要求获取员工表中ename列使用的字符集。如下:
在查询员工表的信息时,使用charset函数获取ename列使用的字符集即可。如下:
select ename,charset(ename) from emp;
concat
函数
现有如下成绩表,要求以"XXX的语文是XX分,数学是XX分,英语是XX分"的格式显示成绩表中的信息。如下:
这时候可以使用concat函数按要求进行字符串连接即可。
select concat(name,'的语文是',chinese,'分,数学是',math,'分,英语是',english,'分') 成绩概览 from exam_result;
instr
函数
instr函数用于获取一个字符串在另一个字符串中首次出现的位置,如果没有出现则返回0。
select instr('2024新年快乐','2024');
ucase
函数
ucase函数用于获取转换成大写之后的字符串。
select ucase('fdsafdsafdsafdsaAQWERTYUIO');
lcase
函数
lcase函数用于获取转换成小写后的字符串。
select lcase('ASDFGGHHJ');
left
函数
left函数用于从字符串的左边开始,向后截取指定个数的字符。
select left('123456789',5);
length
函数
length函数用于获取字符串占用的字节数。如下:
select name,length(name) from exam_result;
说明一下,对于多字节字符来说,不同编码中一个字符所占的字节个数是不同的,比如utf8中一个字符占用3个字节,而gbk中一个字符占用2个字节。
replace
函数
replace函数用于将字符串中的指定子字符串替换成另一个字符串,例如将员工表中所有名字中的"S"替换成"上海"。
strcmp
函数
strcmp函数用于逐字符按照ASCII码比较两个字符串的大小,两个字符串大小相等返回0,前者大返回1,后者大返回-1.
substring
函数
substring函数用于从字符串的指定位置开始,向后截取指定个数的字符。如果没有指定要截取的字符个数,则默认从指定位置开始截取到最后。
select substring('123456',2,3);
ltrim
、rtrim
、trim
函数
trim函数用于去除字符串前后空格。
select traim(' 星河万里 ') 去除结果;
ltrim和rtrim函数分别用于去除字符串的前空格和后空格。
select ltrim(' 星河万里 ') 去除结果;
select rtrim(' 星河万里 ') 去除结果;
综合案例
要求以首字母小写的方式显示员工表中所有员工的姓名,思路如下:
最终concat函数连接后得到的字符串便是首字母小写的员工姓名。如下:
select ename,concat(lcase(substring(ename,1,1)),substring(ename,2)) 首字母小写 from emp;
常用的数学函数如下:
abs
函数
abs函数用于获取一个数的绝对值。
select abs(-1024);
bin
函数
bin函数用于将一个十进制数转换成二进制。
select bin(10);
hex
函数
hex函数用于将一个十进制数转换成十六进制。
select hex(10);
conv
函数
conv函数用于将一个数从一个进制转换成另一个进制。
select conv('A',16,10);
ceiling
函数
ceiling函数用于对一个数进行向上取整。
select ceiling(3.3);
需要注意的是,向上取整本质是向正无穷方向取整,因此负数向上取整后得到的是第一个大于等于该数的整数。
floor
函数
floor函数用于对一个数进行向下取整。
select floor(3.3);
format
函数
format函数用于对数值进行格式化,以四舍五入的方式保留指定位数的小数。
select format(3.1415926,2);
rand
函数
rand函数用于生成 0.0到1.0 的随机浮点数。如果想要生成0到100的随机数,可以用生成随机浮点数乘以100,然后再以某种取整的方式进行取整。
mod
函数
mod函数用于对数值进行求余运算。
user
函数
user函数用于获取MySQL连接的当前用户名和主机名。
select user();
md5
函数
md5函数用于对一个字符串进行md5摘要,摘要后得到一个32字符串。
select md5('xinghewangli');
拓展:
database
函数
database函数用于显示当前正在使用的数据库。
select database();
password
函数
password函数用于对用户数据进行加密。
select password('Cjl12345@');
ifnull
函数
ifnull函数接受两个参数,如果第一个参数不为null,则返回第一个参数,否则返回第二个参数。
select ifnull('a','b');