获取系统时间函数:
NOW()函数能获得系统日期和时间,格式yyyy-MM-dd hh:mm:ss
CURDATE()函数能获得当前系统日期,格式yyyy-MM-dd
CURTIME()函数能获得当前系统时间,格式hh:mm:ss
日期格式化函数:
DATE_FORMAT(日期, 表达式) 函数用于格式化日期,返回用户想要的日期格式。
其中,表达式有以下多种格式:
案例:
利用日期函数,查询1981年上半年入职的员工有多少人?
SELECT COUNT(*) FROM t_emp WHERE DATE_FORMAT(hiredate, "%Y")=1981 AND DATE_FORMAT(hiredate, "%m")<=6;
日期计算的注意事项:
MySQL数据库里面,两个日期不能直接加减,日期也不能与数字加减。
日期偏移计算:
DATE_ADD()函数可以实现日期的偏移计算,而且时间单位很灵活。
案例:
SELECT DATE_ADD(NOW(), INTERVAL 15 DAY); SELECT DATE_ADD(NOW(), INTERVAL -300 MINUTE); SELECT DATE_ADD(DATE_ADD(NOW(), INTERVAL -6 MONTH), INTERVAL -3 DAY);
计算日期之间相隔的天数:
DATEDIFF()函数用来计算两个日期之间相差的天数
判断是否为null并替换null值:
if 函数,表达式为真时返回第一个值,否则返回第二个值:
条件语句:
案例:
SALES部门发放礼品A,其余部门发放礼品B,打印每名员工获得的礼品
SELECT e.empno, e.ename, d.dname, IF(d.dname="SALES","礼品A","礼品B") FROM t_emp e JOIN t_dept d ON e.deptno=d.deptno;
SALES部门去平p1地点,ACCOUNTING部门去p2地点,RESEARCH部门去p3地点
SELECT e.empno, e.ename, d.dname, CASE WHEN d.dname="SALES" THEN "p1" WHEN d.dname="ACCOUNTING" THEN "p2" WHEN d.dname="RESEARCH" THEN "p3" END AS place FROM t_emp e JOIN t_dept d ON e.deptno=d.deptno;
SALES部门中工龄超过20年,10%
SALES部门中工龄不满20年,5%
ACCOUNTING部门,300元
RESEARCH部门里低于部门平均底薪,200元
没有部门的员工,100元
UPDATE t_emp e LEFT JOIN t_dept d ON e.deptno = d.deptno LEFT JOIN (SELECT deptno, AVG(sal) AS avg FROM t_emp GROUP BY deptno) t ON e.deptno=t.deptno SET sal=( CASE WHEN d.dname= "SALES" AND DATEDIFF(NOW(), e.hiredate)/365>=20 THEN e.sal*1.1 WHEN d.dname= "SALES" AND DATEDIFF(NOW(), e.hiredate)/365<20 THEN e.sal*1.05 WHEN d.dname="ACCOUNTING" THEN e.sal+300 WHEN d.dname="RESEARCH" AND e.sal<t.avg THEN e.sal+200 WHEN e.deptno IS NULL THEN e.sal+100 ELSE e.sal END );