-- CURDATE()获取当前日期
select curdate();
-- CURTIME 获取当前时间
select curtime();
-- YEAR,MONTH,DAY 分别获取指定时间的年、月、日
SELECT YEAR(NOW());
SELECT month(NOW());
SELECT day(NOW());
-- date_add(date,INTERVAL int type); 获取指定时间后的70个日期类型
-- 获取当前日期的70天后
select date_add(now(),INTERVAL 70 Day);
-- date_sub(date,INTERVAL int type); 获取指定时间前的70个日期类型
-- 获取当前日期的70天前
select date_sub(now(),INTERVAL 70 Day);
-- DATEDIFF 获取两个指定时间的相差天数
select datediff(now(),'2001-02-04');
-- 需求,查询所有员工的入职天数,并根据入职天数倒序排序
select emp.name,datediff(curdate(),emp.entrydate) as count from emp order by count DESC;
4. 流程函数
sql复制代码
-- if(表达式,v1,v2)如果表达式为true,返回v1,否则返回v2(三元运算)
select if(true,'OK','NO');
select if(FALSE,'OK','NO');
-- ifnull(v1,v2) 如果v1==null,返回v2
select ifnull('v1','v2');
select ifnull('','v2');
select ifnull(null,'v2');
-- case (字段 )when (值1) then (值2) else (值3) end 判断字段是否是值1,如果值1,显示值2,否则显示值3
-- 需求:查询员工姓名及工作地址,如果工作地址为上海/北京,则显示一线城市,否则显示二线城市
select emp.name,emp.workaddress,
case emp.workaddress
when '北京' then '一线城市'
when '上海' then '一线城市'
else '二线城市' end as level
from emp;
-- case when (表达式) then 值1 else 值2 end 判断表达式是否为true,如果为true显示值1,否则为值2;
-- 需求:统计班级各个学员成绩,展示规则如下
-- >=85,优秀
-- >=60,及格
select name,
case
when score.math >=85 then '优秀'
when score.math>=60 then '及格'
else '不及格' end as '数学',
case
when score.english >=85 then '优秀'
when score.english>=60 then '及格'
else '不及格' end as '英语',
case
when score.chinese >=85 then '优秀'
when score.chinese>=60 then '及格'
else '不及格' end as '语文'
from score;