MySQL基础-日期函数&流程函数

80 阅读1分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第17天,点击查看活动详情

日期函数

curtime:当前时间

  • select curtime();
  • QQ截图20221017104138.png

now:当前日期和时间

  • select now();
  • QQ截图20221017104152.png

YEAR , MONTH , DAY:当前年

  • select YEAR(now());
  • QQ截图20221017104604.png

YEAR , MONTH , DAY:当前月

  • select MONTH(now());
  • QQ截图20221017104621.png

YEAR , MONTH , DAY:当前日

  • select DAY(now());
  • QQ截图20221017104635.png

datediff:获取两个日期相差的天数

  • select datediff('2022-11-01', '2022-10-01');
  • QQ截图20221017105148.png

案例:

  • 查询所有员工的入职天数,并根据入职天数倒序排序。 思路: 入职天数,就是通过当前日期 - 入职日期,所以需要使用datediff函数来完成。
  • QQ截图20221017105431.png

流程函数

  • 流程函数也是很常用的一类函数,可以在SQL语句中实现条件筛选,从而提高语句的效率。
函数功能
IF(value , t , f)如果value为true,则返回t,否则返回f
IFNULL(value1 , value2)如果value1不为空,返回value1,否则返回value2
CASE WHEN [ val1 ] THEN [res1] ...ELSE [ default ] END如果val1为true,返回res1,... 否则返回default默认值
CASE [ expr ] WHEN [ val1 ] THEN[res1] ... ELSE [ default ] END如果expr的值等于val1,返回res1,... 否则返回default默认值

演示如下:

if

  • select if(true, 'Ok', 'Error');
  • QQ截图20221017105927.png
  • select if(false, 'Ok', 'Error');
  • QQ截图20221017105919.png

ifnull

select ifnull('Ok','Default');
select ifnull('','Default');
select ifnull(null,'Default');

QQ截图20221017110255.png