写在前面:
老铁,我有个长期项目,想接私活的同学可以看下我的giithub
目录
1,日期函数
日期类型在之前文章【数据类型】中有描述
传送门:【MySQL篇】数据类型_mysql 数据类型-CSDN博客
函数名称
描述
current_date()
当前日期
current_time()
当前时间
current_timestamp()
当前时间戳
date(datetime)
返回datetime参数的部分日期
date_add(date,interval d_value_type)
在date中添加日期或时间,interval关键字后可以是:year,mintue,second,day
date_sub(date,interval d_value_type)
在date中减去日期或时间,interval关键字后可以是:
year,minute,second,day
datediff(date1,date2)
两个日期的差,单位是天
now()
当前日期时间
- 获得当前日期(年月日)
- 获得当前日期(时分秒)
- **获取当前日期 **
- **获得时间戳 **
- **在日期的基础上加上日期 **
- **在日期的基础上减去时间 **
- **计算两个日期之间相差多少天 **
案例1:创建一张生日表,记录生日
mysql> create table tmp(
-> id int primary key auto_increment,
-> birthday date);
- **添加当前日期 **
mysql> insert into tmp (birthday) values (current_date());
- **案例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;
- 查询2分钟内发布的留言
mysql> select * from msg where date_add(sendtime,interval 2 minute)>now();
2,字符串函数
charset(str)
返回str的字符集
concat(string,[...])
连接字符串
instr(str,substring)
返回substring在str中出现的位置,没有返回0
ucase(string2)
转换成大写
lcase(string2)
转换成小写
left(string2,length)
从string2的左边起,取length个字符
length(string)
string的长度,单位是字节
replace(str,search_str,raplace_str)
在str中用replace_str替换search_str
strcmp(string1,string2)
比较两字符串的大小
substring(string,postion,length)
从string的postion开始,读取length个字符
ltrim(string) rtrim(string) trim(string)
去除前空格或后空格(见示例)
示例:
- 查看字符的编码集
- **连接字符串 **
- **判断一个字符是否在另一个字符串中出现 **
- 大小写转换
- ** left,right函数**
- length求字符串长度,单位是字节 (utf8下一个整数3个字节)
**案例: **
- 首先创建一张员工表
- **插入数据 **
- 获取emp表的ename列的字符集 (如果表中有些部分出现乱码,可以查看插入数据的编码和mysql的编码是否一致)
mysql> select charset(ename) from emp;
- ** 将emp表中所有名字中有 S的替换成 '上海'**
mysql> select ename,replace(ename,'S','上海') from emp;
- 截取emp表中ename字段的第2到3个字符
** mysql> select ename,substring(ename,2,2) from emp;**
- **以首字母小写的方式显示所有员工的姓名 **
mysql> select concat(lcase(substring(ename,1,1)),substring(ename,2)) from emp;
3,数学函数
函数名称
描述
abs(num)
绝对值函数
bin(decimal_number)
十进制转二进制
hex(decimal Number)
转换成十六进制
conv(number,form_case,to_base)
进制转换
ceiling(number)
向上取整
floor(number)
向下取整
format(number,decimal_places)
格式化,保留小数位数
rand()
返回随机浮点数,范围【0.0,1.0)
mod(number,denominator)
取模,求余数
示例:
- 绝对值
- **向上取整 **
- 向下取整
- 保留两位小数位数 (四舍五入)
- **十进制转化成二进制 **
- **把一个数字从一个进制转化成另一个进制 **
- **转化成十六进制 **
- 产生随机数
**4,其他函数 **
- user查询当前用户
mysql> select user();
- md5(str)对一个字符串进行md5摘要,摘要后的得到一个32位字符串 ,可以保证用户信息的安全性
**mysql> create table user(
-> id int primary key auto_increment,
-> name varchar(20),
-> password char(32) not null); **
插入数据
mysql> insert into user (name,password) values ('张三',md5('12345'));
mysql> insert into user (name,password) values ('李四',md5('21090'));
- **database(),显示当前正在使用的数据库 **
mysql> select database();
- ifnull(val1,val2),如果val为null,返回val2。否则返回val1
实战OJ
select id,length(string)-length(replace(string,',','')) cnt from strings;