日期函数
常见的日期函数表
函数 功能
CURDATE() 返回当前日期
CURTIME() 返回当前时间
NOW() 返回当前日期和时间
YEAR(date) 获取指定date的年份
MONTH(date) 获取指定date的月份
DAY(date) 获取指定date的天份
DATE_ADD(date,INTERVAL expr type) 返回一个日期/时间加上一个时间间隔expr后的时间值
DATEDIFF(date2,date1) 返回起始detel1和结束date2之间的天数(date2-date1)
CURDATE()/CURTIME()/NOW()
代码
select curdate();select curtime();select time();
执行结果
YEAR(date)/MONTH(date)/DAY(date)
代码
select year(now());select month(now()); select day(now());
执行结果
DATE_ADD(date,INTERVAL expr type)/DATEDIFF(date1,date2)
代码
select date_add(now(),interval 99 day);select datediff('2022-12-12','2021-12-12');
执行结果
流程函数
函数 功能
IF(value,t,f) 如果value为true,则返回t,否则返回f
IFNULL(value1,value2) 如果value1不为空,返回value1,否则返回value2
CASE WHEN [vall] THEN [res1]...ELSE[default] END 如果vall为true,返回res1,...否则返回default默认值
CASE[expr] WHEN [vall] THEN [res1]...ELSE[default] END 如果expr的值等于vall,返回res1,否则返回default默认值
IF(value,t,f)
代码
select if(true,"yes","no");/select if(false,"yes","no");
执行结果
IFNULL(value1,value2)
判断value1是否为空,不为空返回value1,为空返回value2
代码
select ifnull('OK','default');/select ifnull(null,'default');
执行结果
CASE WHEN [vall] THEN [res1]...ELSE[default] END
原始数据
代码
select name, (case WHEN age>=65 THEN '老年' ELSE '青年' END) from user;
执行结果
CASE[expr] WHEN [vall] THEN [res1]...ELSE[default] END
代码
select name, (case age WHEN 18 THEN '刚成年' ELSE '非刚成年' END) from user;
执行结果
CASE WHEN [vall] THEN [res1]...ELSE[default] END和CASE[expr] WHEN [vall] THEN [res1]...ELSE[default] END的区别
前者更倾向于划分一个范围,而后者更加精确到某个值