1

一部の従業員の生年月日を含むテーブルがあります。2 人の従業員の年齢差を調べるにはどうすればよいですか?

4

2 に答える 2

1

以下を試して、2 つの日付間の日、月、年を取得できますか。

DECLARE

dob1 date := TO_DATE('11-17-2015','MM-DD-YYYY'); -- change your dates here
dob2 date := TO_DATE('11-18-2012','MM-DD-YYYY');
v_years varchar2(100);
v_months varchar2(100);
v_days varchar2(100);

BEGIN

select (abs(dob1 - dob2)) into v_days from dual;
DBMS_output.put_line('DAYS   : ' || v_days);

select floor(abs(dob1 - dob2)/365) into v_years from dual;
DBMS_output.put_line('YEARS  : ' || v_years);

select floor(abs(dob1 - dob2)/365*12) into v_months from dual;
DBMS_output.put_line('MONTHS : ' || v_months);


END;
/

出力:

日: 1094 年
: 2
ヶ月 : 35

PL/SQL プロシージャが正常に完了しました。

于 2015-06-06T21:23:40.113 に答える
0

Oracle で2 つの列を減算dateすると、日数の差が生じます。これを 365 で割ると、年の差が得られます。

SELECT     FLOOR(ABS((d1 - d2) / 365)) AS age_diff
FROM       (SELECT dob AS d1
            FROM   employee
            WHERE  empId = 'some_id') t1
CROSS JOIN (SELECT dob AS d2
            FROM   employee
            WHERE  empId = 'some_other_id') t2
于 2015-06-05T08:02:44.510 に答える