使用日期函数高级应用的两个SQL语句

以年月日的方式显示scott.emp中所有员工的服务年限。
语句:select sysdate,hiredate,
    trunc(months_between(sysdate,hiredate)/12)||'年' as 年份差距 ,
    trunc(mod(months_between(sysdate,hiredate) ,12))||'月' as 月份差距 ,
    trunc(sysdate - add_months(hiredate,months_between(sysdate,hiredate)))||'天' as 天差距
from emp;
结果:
SYSDATE        HIREDATE       年份差距                                   月份差距                                   天差距
-------------- -------------- ------------------------------------------ ---------------------------
---------------------------
11-10月-11     17-12月-80     30年                                       9月                                        24天
11-10月-11     20-2月 -81     30年                                       7月                                        21天
11-10月-11     22-2月 -81     30年                                       7月                                        19天
11-10月-11     02-4月 -81     30年                                       6月                                        9天
11-10月-11     28-9月 -81     30年                                       0月                                        13天
11-10月-11     01-5月 -81     30年                                       5月                                        10天
11-10月-11     09-6月 -81     30年                                       4月                                        2天
11-10月-11     19-4月 -87     24年                                       5月                                        22天
11-10月-11     17-11月-81     29年                                       10月                                       24天
11-10月-11     08-9月 -81     30年                                       1月                                        3天
11-10月-11     23-5月 -87     24年                                       4月                                        18天
11-10月-11     03-12月-81     29年                                       10月                                       8天
11-10月-11     03-12月-81     29年                                       10月                                       8天
11-10月-11     23-1月 -82     29年                                       8月                                        18天
 已选择14行。



显示上个月18号距离今天的天数。
语句:select sysdate as 当前日期,(last_day(add_months(sysdate,-1))-to_char(last_day(add_months(sysdate,-1)),'dd')+18) as 上个月8号

日期,trunc(sysdate - (last_day(add_months(sysdate,-1))-to_char(last_day(add_months(sysdate,-1)),'dd')+18)) as 相差天数 from dual;
结果:
当前日期       上个月8号日期    相差天数
-------------- -------------- ----------
11-10月-11     18-9月 -11             23

你可能感兴趣的:(sql)