目录
2.3 时间差timestampdiff()与datediff()
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博客
本次分享至此。