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

计算员工在职年数时日期相减返回异常值的问题求助

计算员工在职年数时日期相减返回异常值的问题求助

嗨,我来帮你搞定这个计算员工在职年数的问题~

你之前写的SQL写法有问题哦,直接用'now' - HireDate是把字符串和日期当成数值来减,完全不是正确的日期差计算方式,这就是为什么会得到负数的原因。

根据你用的DATE('now')语法,看起来你应该是在使用SQLite数据库?那可以用strftime函数来正确计算在职年数,还要考虑到“还没到当年入职纪念日”的情况(比如员工是2020年5月10日入职,现在是2024年3月,那实际在职年数是3年而不是4年),具体SQL语句如下:

SELECT 
    LastName, 
    HireDate,
    -- 计算年份差,再根据当前日期是否过了当年入职日调整
    strftime('%Y', 'now') - strftime('%Y', HireDate) - 
    CASE 
        WHEN strftime('%m-%d', 'now') < strftime('%m-%d', HireDate) THEN 1 
        ELSE 0 
    END AS YearsEmployed
FROM employees;

如果是其他数据库的话,也给你补充一下对应的写法:

  • MySQL:用TIMESTAMPDIFF函数直接计算年份差,会自动处理纪念日的问题:
    SELECT 
        LastName, 
        HireDate,
        TIMESTAMPDIFF(YEAR, HireDate, CURDATE()) AS YearsEmployed
    FROM employees;
    
  • PostgreSQL:用AGE函数获取时间间隔,再提取年份:
    SELECT 
        LastName, 
        HireDate,
        EXTRACT(YEAR FROM AGE(CURRENT_DATE, HireDate)) AS YearsEmployed
    FROM employees;
    

这样就能得到准确的员工在职年数啦~

备注:内容来源于stack exchange,提问作者samss04

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.21 14:23:09