开发者社区> 兴趣使然黄小黄> 正文

【MySQL】数据库函数通关教程上篇(聚合、数学、字符串、日期、控制流函数)(下)

简介: 文章目录 写在前面 1 聚合函数 1.1 GROUP_CONCAT() 1.2 其他聚合函数 2 数学函数 3 字符串函数 4 日期函数 4.1 常见日期函数与使用 4.2 日期格式 5 控制流函数 5.1 if逻辑判断语句 5.2 case when语句
+关注继续查看


🖊 示例代码:

Tips: 答案在代码注释里哦~~~

-- 1.获取时间戳
SELECT UNIX_TIMESTAMP();  -- 1653890515

-- 2.将一个日期转化为毫秒值
SELECT UNIX_TIMESTAMP('2022-05-30 14:02:57');  -- 1653890577

-- 3.将时间戳转化为指定格式的日期
SELECT FROM_UNIXTIME(1653890577,'%Y-%m-%d %H-%i-%s');  -- 2022-05-30 14-02-57

-- 4.获取当前年月日
SELECT CURDATE();  -- 2022-05-30

-- 5.获取当前时分秒
SELECT CURRENT_TIME();  -- 14:05:30

-- 6.获取当前时间包括年月日时分秒
SELECT CURRENT_TIMESTAMP();  -- 2022-05-30 14:07:12

-- 7.获取日期之间的差值(天)
SELECT DATEDIFF('2022-05-30','2008-07-23');  -- 5059

-- 8.获取时间差值
SELECT TIMEDIFF('17:00:00','16:00:00');  -- 01:00:00

-- 9.日期格式化
SELECT DATE_FORMAT('2022-6-1 14:16:5','%Y-%m-%d %H-%i-%s');  -- 2022-06-01 14-16-05

-- 10.日期加减
SELECT DATE_ADD('2022-06-01',INTERVAL 1 DAY);  -- 2022-06-02
SELECT DATE_SUB('2022-06-01',INTERVAL 1 DAY);  -- 2022-05-31

-- 11.从日期中获取年、日、月
SELECT EXTRACT(YEAR FROM '2022-06-01');  -- 2022
SELECT EXTRACT(DAY FROM '2022-06-01');  -- 1
SELECT EXTRACT(MONTH FROM '2022-06-01');  -- 6

4.2 日期格式

🐍 日期格式附表:

格式描述
%a缩写星期名
%b缩写月名
%c月,数值
%D带有英文前缀的月中的天
%d月的天,数值(00-31)
%e月的天,数值(0-31)
%f微秒
%H小时(00-23)
%h小时(01-12)
%I小时(01-12)
%i分钟,数值(00-59)
%j年的天(001-366)
%k小时(0-23)
%l小时(1-12)
%M月名
%m月,数值(00-12)
%pAM 或 PM
%r时间,12-小时(hh:mm:ss AM 或 PM)
%S秒(00-59)
%s秒(00-59)
%T时间, 24-小时(hh:mm:ss)
%U周(00-53)星期日是一周的第一天
%u周(00-53)星期一是一周的第一天
%V周(01-53)星期日是一周的第一天,与 %X 使用
%v周(01-53)星期一是一周的第一天,与 %x 使用
%W星期名
%w周的天(0=星期日, 6=星期六)
%X年,其中的星期日是周的第一天,4 位,与 %V 使用
%x年,其中的星期一是周的第一天,4 位,与 %v 使用
%Y年,4 位
%y年,2 位

5 控制流函数

5.1 if逻辑判断语句

格式说明
IF(expr,v1,v2)如果表达式 expr 成立,返回 v1,否则返回 v2
IFNULL(v1,v2)v1如果为 NULL 则返回 v1,否则返回 v2
ISNULL(expr)判断表达式是否为 NULL,是就返回 1,反之为0
NULLIF(s1,s2)比较字符串,如果 s1 与 s2 相等,就返回 NULL,否则返回 s1

案例1️⃣: 查询判断成绩是否优秀

 首先先准备下面的数据表,具体数据如图,数据表结构代码如下:

CREATE TABLE IF NOT EXISTS student(
    name VARCHAR(20),
    score INT
);
INSERT INTO student VALUES ('祢豆子', 95);
INSERT INTO student VALUES ('漩涡鸣人', 85);
INSERT INTO student VALUES ('佐助', 75);
INSERT INTO student VALUES ('路飞', 55);
INSERT INTO student VALUES ('乔巴', 45);

image


 下面使用逻辑判断语句进行确定是否优秀,并查询,参考代码及结果如下:

SELECT *, IF(score >= 85, '优秀', '不优秀') 'grade'
FROM student;

image


 这里我们仅仅将成绩分成了两类:优秀与不优秀。可是实际情况是成绩分为良好、及格与不及格,但是 if 逻辑判断语句却不能很好的解决,那我们究竟该如何操作才能将成绩分成3类呢? 我们引入 case when 语句。


5.2 case when语句

🍌 语法格式:

CASE expression
    WHEN condition1 THEN result1
    WHEN condition2 THEN result2
    ...
    WHEN conditionN THEN resultN
    ELSE result
END

📖 说明:


 CASE 表示函数的开始,END 表示函数的结束,如果 condition1 成立,则返回 result1,以此类推… … 如果都不成立,则返回 ELSE 后的 result。


案例2️⃣: 将成绩分为良好、及格与不及格三类


 我们还是使用案例1的数据表,并通过 case when函数来实现:

SELECT *,
       CASE score
           WHEN score >= 85 THEN '良好'
           WHEN score >= 60 THEN '及格'
           ELSE '不及格'
           END AS 'grade'
FROM student;

image

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
不全?MySQL数据类型精讲,定点日期枚举文本字符串,json二进制,空间,选择建议,完整详细可收藏
不全?MySQL数据类型精讲,定点日期枚举文本字符串,json二进制,空间,选择建议,完整详细可收藏
101 0
习惯性朴实简单!一起学习MySQL常见单行函数,字符数学日期流程控制
习惯性朴实简单!一起学习MySQL常见单行函数,字符数学日期流程控制
45 0
mysql计算日期差DATEDIFF() 和 TIMESTAMPDIFF()
mysql计算日期差DATEDIFF() 和 TIMESTAMPDIFF()
52 0
【MySQL】数据库函数通关教程上篇(聚合、数学、字符串、日期、控制流函数)(上)
文章目录 写在前面 1 聚合函数 1.1 GROUP_CONCAT() 1.2 其他聚合函数 2 数学函数 3 字符串函数 4 日期函数 4.1 常见日期函数与使用 4.2 日期格式 5 控制流函数 5.1 if逻辑判断语句 5.2 case when语句
50 0
MySQL计算两个日期相差的天数、月数、年数
MySQL计算两个日期相差的天数、月数、年数
174 0
MySQL 根据日期查询并统计数据
作者主页:https://www.couragesteak.com/
66 0
sql中datetime日期类型字段比较(mysql&oracle)
sql中datetime日期类型字段比较(mysql&oracle)
100 0
MySQL日期,字符串,数字函数
MySQL日期,字符串,数字函数
66 0
mysql和oorcale日期区间查询【含左右区间问题】
mysql和oorcale日期区间查询【含左右区间问题】
72 0
文章
问答
文章排行榜
最热
最新
相关电子书
更多
让 MySQL 原生分布式触手可及
立即下载
好的 MySQL 兼容可以做到什么程度
立即下载
云数据库RDS MySQL从入门到高阶
立即下载