目录
1. 查询技巧
2. 时间函数
2.1 now()
2.2 current_date()
2.3 时间差timestampdiff()与datediff()
2.4 其他时间函数
3. 字符函数
3.1 截取函数
3.2 分割函数
3.3 left与right函数
3.4 其他函数
4. 数字函数
5. 转换函数
5.1 时间转字符
5.1.1 示例
5.1.2 语法
5.2 字符串转时间
5.2.1 示例
5.2.2 语法
5.3 字符转数字
6.聚合函数
6.1 count():取数量。
6.1.1 常用语法
6.1.2 常用形式性能问题
6.2 avg()
6.3 其他
7. 其他函数
1. 查询技巧
首先介绍一种查询用法。 我们可以在数据库管理工具中(例如navicat)直接使用如下方式获取函数结果:
select 函数(入参);
例如获取当前时间,now()函数是获取当前时间
select now();
2. 时间函数
2.1 now()
当前时间,示例如上。
2.2 current_date()
获取当前日期
2.3 时间差timestampdiff()与datediff()
计算两个日期的相差天数:
select datediff('2024-01-09 21:00:00','2024-01-01 21:01:01');
结果:8
计算两个时间的相差值:
select timestampdiff(SECOND,'2024-01-09 21:00:00','2024-01-09 21:01:01');
结果:61
注:timestampdiff()可以输入不同的单位,例如:HOUR、DAY
2.4 其他时间函数
YEAR(date):获取 date 中的年。
MONTH(date):获取 date 中的月。
DAY(date):获取 date 中的日。
HOUR(date):获取 date 中的小时。
MINUTE(date):获取 date 中的分。
SECOND(date):获取 date 中的秒。
感兴趣可以自行试试。
3. 字符函数
3.1 截取函数
select SUBSTRING('20240109214000',1,8) ;
结果:20230109
注:起始位置为1
3.2 分割函数
select SUBSTRING_INDEX('河北_保定_定州', '_', 2);
结果:河北_保定
使用场景: 经常使用于机构表的查询,因为大多数类似机构表的数据存储格式为省市县_乡(示例,莫纠结详细真实场景),我们可以使用分割函数来获取某个省的数据,
3.3 left与right函数
select left('20240109214000',8);
结果:20240109
使用场景:针对于使用字符存储日期的数据库中,使用场景非常多。例如:查询创建时间为20240109的订单数据数据(此处我们假设订单表的创建时间是字符类型,格式为:yyyyMMddHHmmss):
select * from t_order where left(create_time,8) ='20240109'
可以自行尝试一下right函数。
3.4 其他函数
length(字段):长度函数
concat(字段1,字段2,...):连接函数(使用常景也比较多)
4. 数字函数
向上取整 CEIL(X) 和 CEILING(X):返回大于等于 X 的最小 INT 型整数。
向下取整 FLOOR(X):返回小于等于 X 的最大 INT 型整数。
舍入函数 ROUND(X,D):X 表示要处理的数,D 表示保留的小数位数,处理的方式是四舍五入。ROUND(X) 表示保留 0 位小数。
5. 转换函数
5.1 时间转字符
5.1.1 示例
select date_format(now(),'%Y-%m');
结果:2024-01
5.1.2 语法
date_format(date, format)
-
date
:要格式化的日期或时间值。 -
format
:指定日期或时间值的格式其中日期格式化选项:
-
%Y
:四位数的年份(例如:2023)。 -
%y
:两位数的年份(例如:23)。 -
%m
:两位数的月份(01-12)。 -
%d
:两位数的日(01-31)。 -
%H
:24 小时制的小时数(00-23)。 -
%i
:两位数的分钟数(00-59)。 -
%s
:两位数的秒数(00-59
5.2 字符串转时间
5.2.1 示例
select str_to_date('2024-01-09','%Y-%m-%d');
结果:2024-01-09
5.2.2 语法
STR_TO_DATE(str, format)
-
str
是要转换的字符串。 -
format
是字符串的格式,选项同date_format函数
5.3 字符转数字
直接使用+0即可
select ('1' + 0);
结果 : 1
6.聚合函数
6.1 count():取数量。
6.1.1 常用语法
count(distinct 字段):
示例:查询订单表中共有多少种商品,SQL如下:
select count(distinct good_id) from t_order
6.1.2 常用形式性能问题
请参考这篇文章:mysql进阶-不同的count()性能-CSDN博客
6.2 avg()
avg():求平均值。
示例:
表中存在如下数据:
select avg(score) from t_score;
结果:
这个函数的最终值,是去掉null之后做的除法
6.3 其他
sum():求和
max():求最大值
min():求最小值
7. 其他函数
group_concat 与 find_in_set 这两个函数的使用案例,
请看这篇文章:分类分级数据统计-CSDN博客
本次分享至此。