3

我有一张由一列组成的表格(BIRTH_DATE)。我如何使用 sysdate 从 myBIRTH_DATEGROUP BY它们的所有行中减去?

更清楚:

这是我获取的内容,现在我想在下表中为所有行添加一个 AGE 列

ID     Birth_Date
___    ___________
1       02-JAN-63
2       23-OCT-31
3       30-DEC-35
4       06-MAY-83

提前致谢!

4

4 回答 4

6

要根据通常的标准(即根据自出生以来经过的日历年数)获取一个人的年龄,考虑到闰年,您可以使用 MONTHS_BETWEEN 运算符:

SELECT id, MONTHS_BETWEEN(sysdate, birth_date) / 12 age FROM my_table;
于 2012-10-15T06:22:50.593 回答
5

简单地减去birth_datesysdate

select id, (sysdate - birth_date) / 365 age from my_table;

减去日期会得到天数,因此除以 365 将得到十进制年份。

于 2012-10-12T16:04:01.507 回答
3

已经很久了。希望这可以帮助。

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 代码。

于 2020-04-19T14:06:35.257 回答
3

SELECT TRUNC(months_between(SYSDATE,birthDate) / 12) AS 年龄

于 2018-11-24T17:03:17.763 回答