🖊 示例代码:
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) |
%p | AM 或 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);
下面使用逻辑判断语句进行确定是否优秀,并查询,参考代码及结果如下:
SELECT *, IF(score >= 85, '优秀', '不优秀') 'grade' FROM student;
这里我们仅仅将成绩分成了两类:优秀与不优秀。可是实际情况是成绩分为良好、及格与不及格,但是 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;