从 sql 中的 table 中减去两个日期
subtract two dates from a table in sql
我有一个 table,其中有一些员工的出生日期。如何找到两名员工之间的年龄差异?
在 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
你能试试下面的方法来得到两个日期之间的天数、月数和年数吗?
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 程序成功完成。
我有一个 table,其中有一些员工的出生日期。如何找到两名员工之间的年龄差异?
在 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
你能试试下面的方法来得到两个日期之间的天数、月数和年数吗?
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 程序成功完成。