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

如何用MySQL计算任职年限(年和月)?求正确SQL查询语句

MySQL计算员工任职年限(年+月)的正确查询语句

直接通过日期的年、月、日分段计算,比用DATEDIFF转天数更准确——后者会忽略不同月份的天数差异,导致结果偏差。以下是适配你需求的SQL:

SELECT
    USERID,
    CONCAT(
        FLOOR(total_months / 12), ' Years and ',
        total_months % 12, ' Months'
    ) AS TENURE
FROM (
    SELECT
        USERID,
        -- 先计算年份差转成月份,加上月份的直接差值
        (YEAR(Separation_Date) - YEAR(Date_Hired)) * 12 + 
        (MONTH(Separation_Date) - MONTH(Date_Hired)) - 
        -- 如果离职日的日期早于入职日,扣减1个月(当月未做满整月)
        CASE WHEN DAY(Separation_Date) < DAY(Date_Hired) THEN 1 ELSE 0 END AS total_months
    -- 替换成你的实际数据表名称
    FROM your_table_name
) AS tenure_calculation;

逻辑说明

  1. 先通过年份差算出基础月份数,再叠加月份的直接差值
  2. 额外判断离职日的「日」是否小于入职日的「日」:若是,说明当月未做满整月,需扣减1个月
  3. 最后将总月份数拆分成年和月,拼接成你需要的格式

把语句中的your_table_name替换成你的实际表名,执行后就能得到期望的结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 19:38:34