繁体   English   中英

如何动态计算天数(Oracle SQL)

[英]How to calculate the number of days dynamically (Oracle SQL)

考虑到 28、29、30 和 31 个月,我正在尝试计算 sysdate 和 hire_date 列之间的年数、月数和天数

我已经设法计算了年份和月份,但我需要你的帮助来计算天数。

到目前为止,这是代码。

`

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
FROM employees;

`

提前致谢。

我已经计算了年份和月份,我需要帮助计算天数以及可能如何计算它。

您可以将已计算的完整月/年数添加到hire_date ,然后找到从该日期到当前日期的天数:

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,
       TRUNC(SYSDATE) - ADD_MONTHS(hire_date, trunc(months_between(sysdate, hire_date)))
         AS remaining_days
FROM   employees;

其中,对于示例数据:

CREATE TABLE employees (employee_id, last_name, hire_date) AS
SELECT 1, 'Alice', DATE '2022-01-01' FROM DUAL UNION ALL
SELECT 2, 'Beryl', DATE '2020-11-30' FROM DUAL UNION ALL
SELECT 3, 'Carol', DATE '2000-04-13' FROM DUAL;

输出:

员工ID 雇用日期 REMAINING_MONTHS REMAINING_DAYS 天
1个 爱丽丝 22 年 1 月 1 日 0 11 12
2个 绿柱石 2020 年 11 月 30 日 2个 0 13
3个 颂歌 2000 年 4 月 13 日 22 8个 0

小提琴

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM