我有一张由一列组成的表格(BIRTH_DATE)
。我如何使用 sysdate 从 myBIRTH_DATE
和GROUP BY
它们的所有行中减去?
更清楚:
这是我获取的内容,现在我想在下表中为所有行添加一个 AGE 列
ID Birth_Date
___ ___________
1 02-JAN-63
2 23-OCT-31
3 30-DEC-35
4 06-MAY-83
提前致谢!
我有一张由一列组成的表格(BIRTH_DATE)
。我如何使用 sysdate 从 myBIRTH_DATE
和GROUP BY
它们的所有行中减去?
更清楚:
这是我获取的内容,现在我想在下表中为所有行添加一个 AGE 列
ID Birth_Date
___ ___________
1 02-JAN-63
2 23-OCT-31
3 30-DEC-35
4 06-MAY-83
提前致谢!
要根据通常的标准(即根据自出生以来经过的日历年数)获取一个人的年龄,考虑到闰年,您可以使用 MONTHS_BETWEEN 运算符:
SELECT id, MONTHS_BETWEEN(sysdate, birth_date) / 12 age FROM my_table;
简单地减去birth_date
:sysdate
select id, (sysdate - birth_date) / 365 age from my_table;
减去日期会得到天数,因此除以 365 将得到十进制年份。
已经很久了。希望这可以帮助。
declare
patAge int;
patName patient.fname%type;
cursor agePat is
SELECT fname, MONTHS_BETWEEN(sysdate, dob) / 12 age FROM patient;
begin
open agePat;
loop
fetch agePat into patName, patAge;
exit when agePat%notfound;
dbms_output.put_line('Patient Age = ' || patAge || ' || Patient Name = ' || patName);
end loop;
close agePat;
end;
/
这里的patAge是存储年龄值,patName是存储表中患者姓名的值。
我将@JeffreyKemp 解决方案变成了pl sql 代码。
SELECT TRUNC(months_between(SYSDATE,birthDate) / 12) AS 年龄