【MySQL】内置函数

目录

一、日期函数

current_date()与current_time()

now()

date_add()与date_sub()

datediff()

二、字符串函数

charset(str)

concat()

length()

replace()

substring()

trim()

三、数学函数

四、其他函数


一、日期函数

常见日期函数如下:

函数名称 描述
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) 两个日期的差,单位是天
now() 当前日期时间

接下来依次介绍:

current_date()与current_time()

current_date,current_time,current_timestamp分别是返回当前日期和当前时间和当前时间戳

sql 复制代码
select current_date();
sql 复制代码
select current_time();

也可以一起使用:

sql 复制代码
select current_date(),current_time;
sql 复制代码
select current_timestamp();

now()

也可以使用now函数查看当前时间

sql 复制代码
select now();

用date函数,截取日期,会忽略显示时间

也可以嵌套函数使用:

date_add()与date_sub()

date_add和date_sub进行时间计算

都有两个参数,将所计算的时间增加或者减少多少时间

sql 复制代码
select date_add('1949-10-1', interval 10 day);
sql 复制代码
select date_sub('1949-10-1', interval 10 day);

也可以嵌套函数使用:

sql 复制代码
select date_add(now(), interval 10 day);
sql 复制代码
select date_sub(now(), interval 10 day);

datediff()

datediff时间相减

计算两个日期之间相差多少天

sql 复制代码
select datediff(now(),'2000-1-1');

这实际上是前面一个的时间减去后面一个的时间的

二、字符串函数

函数名 功能描述
charset(str) 返回字符串字符集
concat(string2 [, ...]) 连接字符串
instr(string, substring) 返回substring在string中出现的位置,没有返回0
ucase(string2) 转换成大写
lcase(string2) 转换成小写
left(string2, length) 从string2中的左边起取length个字符
length(string) string的长度
replace(str, search_str, replace_str) 在str中用replace_str替换search_str
strcmp(string1, string2) 逐字符比较两字符串大小
substring(str, position [, length]) 从str的position开始,取length个字符
ltrim(string)、rtrim(string)、trim(string) 去除前空格或后空格

charset(str)

charset(str) 返回字符串的编码集

sql 复制代码
select charset(字符串);

concat()

concat拼接字符串

sql 复制代码
select concat(字符串1,字符串2,字符串3...);

也可以嵌套函数:

length()

length求字符串长度

这里求的是字节数,而不是字符的个数

replace()

replace替换字符

sql 复制代码
replace(str, search_str, replace_str);

将deptno中的deptno中的0替换为1显示

注意,这里是替换显示,并没有真正替换

substring()

substring字符串截取

sql 复制代码
substring('字符串', 起始位置, 截取长度);

截取长度如果不写,就是从起始位置截取到最后

如上就是对字符串中,第三个字符(包含第三个)截取四个长度

也可以对一个表中进行截取

分割字符串

sql 复制代码
select dname, substring(dname, 1, 2), substring(dname,3) from dept;

trim()

ltrim和rtrim和trim

去掉左边或者右边或者左边和右边的空格的函数

三、数学函数

函数名称 描述
abs(number) 绝对值函数
bin(decimal_number) 十进制转换二进制
hex(decimalNumber) 转换成十六进制
conv(number, from_base, to_base) 进制转换
ceiling(number) 向上去整
floor(number) 向下去整
format(number, decimal_places) 格式化,保留小数位数
rand() 返回随机浮点数,范围[0.0, 1.0]
mod(number, denominator) 取模,求余

abs取绝对值

bin,十进制转二进制

conv将一个数字从某个进制转化为另一个进制

sql 复制代码
conv(num,x,y);

将num从x进制转化为y进制

ceiling和floor取整

celling是向上取整,对于正数就是将其小数点去掉,整数部分+1,对于负数就是直接将小数点去掉

floor是向下取整,对于正数就是将其小数点去掉,对于负数就是直接将小数点去掉,整数部分+1,

四、其他函数

user()查看当前用户

database();

查看当前所处的数据库

md5密码加密

md5函数用于对一个字符串进行md5摘要,摘要后得到一个32位字符串,这样能够防止当数据库被盗后,能够初步防止数据密码被盗取

sql 复制代码
mysql> create table user(
    -> id int unsigned primary key auto_increment,
    -> password varchar(32)
    -> );

接着向其中插入没通过md5转化和通过md5转化的字符串看看:

sql 复制代码
insert into user (password) values md5('hehe');
insert into user (password) values (md5('hello'));

这里需要注意的是,当插入的SQL语句中,有password的时候,是无法再历史消息中找到的

接着查看user表

如果想查询的话,就可以通过密码查询,如果事先已经通过md5转化了就需要通过md5查询,没有则不需要

ifnull函数,如果第一个是空,就返回第二个,如果第一个参数不是空,就返回第一个

相关推荐
h***346317 分钟前
Redis安装教程(Windows版本)
数据库·windows·redis
q***656919 分钟前
使用Canal将MySQL数据同步到ES(Linux)
linux·mysql·elasticsearch
蓝色记忆44 分钟前
执行计划FirstMatch
mysql
toooooop81 小时前
CentOS 7 系统上安装 **Nginx + MySQL 5.7 + PHP 7.3 + Redis** 的完整步骤
redis·mysql·nginx·centos·php7
泡沫·2 小时前
5.MariaDB数据库管理
数据库·mariadb
i***51262 小时前
【数据库】MySQL的安装与卸载
数据库·mysql·adb
7***31882 小时前
若依微服务中配置 MySQL + DM 多数据源
android·mysql·微服务
M***29912 小时前
在 Ubuntu 上安装 MySQL 的详细指南
mysql·ubuntu·adb
数白2 小时前
Oracle 数据迁移最佳实践(不使用第三方工具)
数据库·oracle
周杰伦fans2 小时前
C# 中的**享元工厂**模式
开发语言·数据库·c#