Oracle 两日期间隔的年月日
用365 或者30天 都是不准的
months_between(date1,date2)函数得到的是两个时间间隔的日历月 是准确的
--9.以年月日的方式显示所有员工的服务年限
select employee_id as "雇员编号",
first_name || ' ' || last_name as "雇员姓名",
hire_date as "雇佣日期",
to_char(sysdate,'YYYY/MM/DD') as "当前日期",
trunc(months_between(sysdate,hire_date)/12)||'年'
-- 日历月 / 12 = 年份
||trunc((months_between(sysdate,hire_date)-trunc(months_between(sysdate,hire_date)/12)*12))||'个月零'
-- 日历月取整 - 年份 * 12 = 月份
||trunc(sysdate-add_months(hire_date,trunc(months_between(sysdate,hire_date))))||'天'
-- 当前日期 - 入职日期在 ( 日历月取整以后个的月 ) 的日期 = 天数
as "服务年限"
from employees;