MySQL查询以获得下个月的员工周年纪念日

时间:2014-04-07 06:49:20

标签: mysql sql

我想编写一个查询,以获取下个月到期的里程碑成就者(员工)列表。例如,1月我们应该能够看到2月里程碑成就者。

Milestone成就者的意思是“下个月将在公司完成5,10,15,20,25,30,35,40等”的员工。

有人可以帮忙吗?

提前非常感谢你!

1 个答案:

答案 0 :(得分:2)

鉴于您有一个employees列的hired_at列,其中包含日期,当他们开始在公司工作时,您只需要获取下个月与他们之间差异的行雇用日期是60个月(5年)的倍数:

SELECT employee_name, 
TIMESTAMPDIFF(MONTH, DATE_FORMAT(hired_at, '%Y-%m-01'), DATE_FORMAT(CURDATE() + INTERVAL 1 MONTH, '%Y-%m-01')) / 60 AS how_many_years
FROM employees
WHERE 
TIMESTAMPDIFF(MONTH, DATE_FORMAT(hired_at, '%Y-%m-01'), DATE_FORMAT(CURDATE() + INTERVAL 1 MONTH, '%Y-%m-01')) % 60 = 0;

我使用TIMESTAMPDIFF与单位MONTH计算差异,DATE_FORMAT将两个日期设置为该月的第一天。这可能没有必要,但你可以安全地使用它。

% 60 = 0modulo操作(%)。如果前一个是60可分,没有任何东西(0),那么我们有60个月/ 5年的倍数。只需将SELECT条款中的差异除以60就可以了解员工为公司工作多少年。

  • 详细了解timestampdiff heredate_format here