一部の従業員の生年月日を含むテーブルがあります。2 人の従業員の年齢差を調べるにはどうすればよいですか?
質問する
208 次
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 に答える