Oracle SQL,如何使用当前日期 - 指定日期

use*_*711 6 sql oracle

为了获得当前日期,我使用此..

select extract(year from sysdate) from dual;
Run Code Online (Sandbox Code Playgroud)

为了得到我的数据库保持的日期我使用这个..

select extract(year from startdate) from staff;
Run Code Online (Sandbox Code Playgroud)

但现在我正在尝试通过使用更新现场工作人员的字段调用serviceYears

current year - year of start date

获得员工承诺工作的年数.我该如何实现它..

我正在使用oracle sql

谢谢!

我试着用

SQL> select dual.sysdate-staff.startdatefrom dual,staff;

select dual.sysdate-staff.startdatefrom from dual,staff
            *
ERROR at line 1:
ORA-01747: invalid user.table.column, table.column, or column specification
Run Code Online (Sandbox Code Playgroud)

我也试过了

select SYSDATE-to_date('01-jan-2007','dd-mon-yyyy') from dual;

But it return me
SYSDATE-TO_DATE('01-JAN-2007','DD-MON-YYYY')
--------------------------------------------
                                  2136.93719
Run Code Online (Sandbox Code Playgroud)

我怎么才能获得这一年?

rs.*_*rs. 9

你可以这样做

UPDATE STAFF
SET serviceYear = ROUND((sysdate - startDate)/365)
Run Code Online (Sandbox Code Playgroud)

例如:

select ROUND((sysdate - to_date('01-JAN-2007','DD-MON-YYYY'))/365) 
from dual; -- returns 6


select ROUND((sysdate - to_date('01-JAN-2005','DD-MON-YYYY'))/365,2) 
from dual; -- returns 7.85
Run Code Online (Sandbox Code Playgroud)

更新:

SELECT 
FLOOR((SYSDATE - TO_DATE('01-JAN-2005','DD-MON-YYYY'))/365) YEARDOWN,
CEIL((SYSDATE - TO_DATE('01-JAN-2005','DD-MON-YYYY'))/365) YearUP
FROM DUAL;
Run Code Online (Sandbox Code Playgroud)