You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过员工表入职日期字段查询司龄为5的整数倍的员工列表

司龄为5整数倍的员工查询方案

核心思路

  • 首先计算员工从入职日期(join date)到当前日期的完整司龄(按年计算)
  • 对计算得到的司龄取模5,判断余数是否为0,满足条件的即为目标员工

各数据库实现示例

1. MySQL

SELECT `employee id`, `name`, `dob`, `join date`
FROM 员工表 -- 替换为你的实际表名
WHERE TIMESTAMPDIFF(YEAR, `join date`, CURDATE()) % 5 = 0;

注意:TIMESTAMPDIFF计算的是两个日期之间的完整年份差,会自动考虑周年日是否已过,避免出现虚司龄的问题。

2. PostgreSQL

SELECT "employee id", "name", "dob", "join date"
FROM 员工表 -- 替换为你的实际表名
WHERE EXTRACT(YEAR FROM AGE(CURRENT_DATE, "join date"))::INT % 5 = 0;

3. SQL Server

SELECT [employee id], [name], [dob], [join date]
FROM 员工表 -- 替换为你的实际表名
WHERE DATEDIFF(YEAR, [join date], GETDATE()) % 5 = 0
-- 可选补充:如果要精确判断满整年,避免年初入职还没到周年日就被统计,可以加下面的条件
AND DATEADD(YEAR, DATEDIFF(YEAR, [join date], GETDATE()), [join date]) <= GETDATE();

4. Oracle

SELECT "employee id", "name", "dob", "join date"
FROM 员工表 -- 替换为你的实际表名
WHERE MOD(EXTRACT(YEAR FROM SYSDATE) - EXTRACT(YEAR FROM "join date"), 5) = 0
-- 可选补充:精确满整年判断
AND ADD_MONTHS("join date", (EXTRACT(YEAR FROM SYSDATE) - EXTRACT(YEAR FROM "join date"))*12) <= SYSDATE;

注意事项

  • 所有字段名如果带空格,需要对应数据库的转义符包裹(MySQL用反引号,SQL Server用方括号,PostgreSQL和Oracle用双引号)
  • 如果业务需要精确到入职当天才算满整年,建议加上补充的日期判断条件,避免统计到还没到周年日的员工

内容的提问来源于stack exchange,提问作者Chitrasen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 02:39:00