数据库作业有一道题是这样子的:
有一张名叫emp的表记录员工信息,其中有如下字段 HIREDATE 表示员工被雇用的日期:
然后问题是这样的:
q7.Show details of employee hiredates and the date of their first payday.
(Paydays occur on the last Friday of each month)
(plus their names)
意思就是每个月的最后一个周五是发工资的日子,要我们输出他们领到第一桶金的日子。(这里其实是计算当月payday,不考虑hiredate超过payday的情况)
那么怎么通过一个日期计算出当月的最后一个周五呢?我们用最暴力的方法,直接迭代计算:
思路:
LAST_DAY 函数找当月最后一天 x
日期 x 逐天减少
直到 x 等于周五,即是最后一个周五
代码:
DELIMITER $$# 结束符由 ; 改为 $$ 。因为函数中间需要用到 ; 号
DROP FUNCTION IF EXISTS last_friday $$# 删除之前定义的函数 last_friday
CREATE FUNCTION last_friday (dt DATE) RETURNS DATE# 定义函数 last_friday 有一个DATE类的形参 dt