日期函数
函数名称 | 说明 |
---|---|
current_date() | 获取当前的日期 |
current_time() | 获取当前的时间 |
current_timestamp() | 获取当前的时间戳,这个时间戳以:日期+时间的格式进行显示 |
date(datetime) | 给它一个datetime类型的参数,它能帮我们截取出参数中的日期部分 |
date_add(date,interval d_value type ) | date部分可以填日期或时间,interval 后的数值单位可以是:year、month、day、hour、minute、second,用来计算未来时间 |
date_sub(date,interval d_value type ) | date部分可以填日期或时间,interval 后的数值单位可以是:year、month、day、hour、minute、second,用来计算过去时间 |
datediff(date1,date2) | 两个日期的差,前面-后面 |
now() | 显示当前日期时间 |
注意:
1、如果没有显示说明的话,那么日期就代表:年月日,时间就代表:时分秒;
2、在MySQL中如果要执行函数的话,那么需要带上select,也就是要按照以下规则来调用:
select function(exper);
如果不是这个格式会报错;
下面我们来具体演示一下这些函数:
- 获得当前日期:
SQL语句:select current_date();
- 获得当前时间:
SQL语句:select current_time();
- 获得当前时间戳:
SQL语句:select current_timestamp();
- 计算’2002-11-01 13:14:20’ 未来10/年/月/日/时/分/秒过后的时间:
- 计算’2002-11-01 13:14:20’ 过去1010/年/月/日/时/分/秒过后的时间:
- 计算’2002-10-01’与‘2024-10-01’相差多少天:
字符串函数
函数名称 | 说明 |
---|---|
charset(str) | 返回输入字符串的字符集 |
concat(string2,[…]) | 连接字符串 |
instr(string,substring) | 返回substring在string中出现的位置,没有返回0,注意在MySQL中字符串下标是从1开始 |
ucase(string) | 将字符串转换为大写 |
lcase(string) | 将字符串转换为小写 |
left(string ,length) | 从string字符串左侧开始截取length个字符 |
right(string,length) | 从string字符串右侧开始截取length个字符 |
length(string) | 计算string字符串的字节数 |
replace(str,search_str,replace_str) | 将str字符串中的search_str替换成replace_str |
strcmp(string1,string2) | 逐字符比较两个字符串的大小 |
substring(str,pos,length) | 在str中从pos位置开始截取length个字符 |
ltrim(string) | 去除string的前导空格 |
rtrim(string) | 去除string的后导空格 |
trim(string) | 去除string的前导空格和后导空格 |
案例:
- 获取emp表的ename列的字符集:
SQL语句:
select charset(ename) from emp;
- 要求显示exam_result表中的信息,显示格式:“XXX的语文是XXX分,数学XXX分,英语XXX分,总分是xxx”
我们来查看一下exam_result中的数据:
- 求学生表中学生姓名占用的字节数
SQL语句:
select ename,length(ename) from emp;
在utf8编码格式下,阿斯克吗是用1字节来表示的,中文汉字是用3字节来表示的;- 将EMP表中所有名字中有S的替换成’上海’
SQL语句:
select ename,replace(ename,'S','上海') from emp;
- 截取EMP表中ename字段的第二个到第三个字符
SQL语句:
select ename,substring(ename,2,3) from emp;
- 以首字母小写的方式显示所有员工的姓名
SQL语句:
select ename,lcase(ename) from emp;
数学函数
函数名称 | 说明 |
---|---|
ans(num) | 绝对值函数 |
bin(num) | 十进制整数转换二进制(如果是小数的话,那么只会转换小数的整数部分) |
hex(num) | 将十进制整数转换为16进制 |
conv(num,from_base,to_base) | 将num从from_base进制转换为to_base进制 |
ceiling(num) | 向正无穷取整 |
floor(num) | 向负无穷取整 |
format(num,decimal_places) | 将num保留decimal_places位小数 |
rand() | 返回随机浮点数,范围[0.0,1.0) |
mod(num,denominator) | 取模、求余 |
round | 四舍五入取整 |
- 绝对值
SQL语句:
select abs(-12.929);
- 向负无穷取整:
SQL语句:
select floor(-7.011);
- 向正无穷取整:
SQL语句:
select ceiling(2.01);
- 四舍五入取整:
SQL语句:
- 以2位小数的形式显示:
- 生成1~100的随机数:
SQL语句:
select round(rand()*100+1);
其它函数
函数名称 | 说明 |
---|---|
user() | 查询当前用户信息 |
md5(str) | 对str字符串进行加密,新城32个长度的字符 |
database() | 显示当前正在使用的数据库 |
password(str) | 对str字符串进行加密 |
ifnull(val1,val2) | 如果val1为null,那么就返回val2的值;如果val1不为空,则返回val1的值 |
eg:
- 查询当前用户信息:
- 显示正在使用的数据库:
- 对’string’字符串进行md5摘要:
- 对用户信息进行加密:
对于用户的登录验证我们可以按照如下方式:
就比如现在用户登录信息为(‘root’,‘1234’),我们要验证这个信息的正确性:
没有查到,这说明当前用户要么不存在要么密码输入错误;
如果我们给的是正确信息呢:
这时候查询出了数据,这说明用户登录信息正确,可以让用户体验我们的服务;
注意: 在新版MySQL中可能已经移除了password函数,那么对于数据的加密工作我们也可以用md5()函数来实现- ifnull(val1, val2) 如果val1为null,返回val2,否则返回val1的值