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

Oracle SQL动态计算日期差:如何实现剩余天数的计算

Oracle SQL计算入职日期与当前日期的年、月、日差值

要准确计算剩余天数,需基于已算出的年数和剩余月数,将入职日期向后推对应年月,再用当前日期减去该推后日期,自动适配不同月份28/29/30/31天的差异。

完整实现代码

SELECT 
    employee_id, 
    last_name, 
    hire_date,
    -- 计算年数
    TRUNC(MONTHS_BETWEEN(SYSDATE, hire_date) / 12) AS years,
    -- 计算剩余月数
    TRUNC(MOD(MONTHS_BETWEEN(SYSDATE, hire_date), 12)) AS remaining_months,
    -- 计算剩余天数:将入职日期推years年+remaining_months月后,与当前日期做差
    TRUNC(SYSDATE) - TRUNC(ADD_MONTHS(hire_date, TRUNC(MONTHS_BETWEEN(SYSDATE, hire_date)/12)*12 + TRUNC(MOD(MONTHS_BETWEEN(SYSDATE, hire_date), 12)))) AS remaining_days
FROM employees;

逻辑说明

  1. ADD_MONTHS()函数会自动处理月份天数边界问题:比如从1月31日加1个月,会根据目标年份2月的实际天数调整为28或29日;从4月30日加1个月会自动对应到5月30日,完全贴合实际日历规则。
  2. 用TRUNC()截断日期的时间部分后做减法,得到的是两个日期之间的整数天数差,确保结果精准无误差。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 21:55:13