繁体   English   中英

从SQL表中减去两个日期

[英]subtract two dates from a table in sql

我有一张桌子,上面有一些雇员的出生日期。 如何找到两名员工之间的年龄差异?

您可以尝试以下方法获取两个日期之间的天,月和年吗?

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;
/

OUTPUT:

天:1094
年:2
月:35

PL / SQL过程成功完成。

在Oracle中减去两个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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM