Plsql PL/SQL:知道一个名为Birth\u Date的列如何计算年龄?

Plsql PL/SQL:知道一个名为Birth\u Date的列如何计算年龄?,plsql,Plsql,我有一个由一列组成的表(出生日期)。如何使用sysdate从我的BIRTH\u DATE和GROUP的所有行中减去它们 更清楚地说: 这是我获取的内容,现在我想在下表中为所有行添加一个年龄列 ID Birth_Date ___ ___________ 1 02-JAN-63 2 23-OCT-31 3 30-DEC-35 4 06-MAY-83 提前谢谢 只需从sysdate中减去birth\u date: select id, (

我有一个由一列组成的表
(出生日期)
。如何使用sysdate从我的
BIRTH\u DATE
GROUP的所有行中减去它们

更清楚地说:

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

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

提前谢谢

只需从
sysdate
中减去
birth\u date

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

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

只需从
sysdate
中减去
birth\u date

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

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

要根据通常的标准(即根据自出生以来经过的日历年数)获得一个人的年龄,考虑到闰年,您可以使用操作员之间的月数:

SELECT id, MONTHS_BETWEEN(sysdate, birth_date) / 12 age FROM my_table;

要根据通常的标准(即根据自出生以来经过的日历年数)获得一个人的年龄,考虑到闰年,您可以使用操作员之间的月数:

SELECT id, MONTHS_BETWEEN(sysdate, birth_date) / 12 age FROM my_table;

选择TRUNC(介于(系统日期,出生日期)/12之间的月份)作为年龄

选择TRUNC(介于(系统日期,出生日期)/12之间的月份)作为年龄

时间太长了。希望这有帮助

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

这已经是很长一段时间了。希望这有帮助

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

您需要更清楚:为什么您觉得需要分组?原始数据是什么样子的?您正在尝试将年龄列添加到表或结果集中吗?我需要按年龄“分组”,因为我需要确定列表中最老的和最年轻的。原始数据就是上面的示例表。谢谢你需要更清楚:为什么你觉得你需要分组?原始数据是什么样子的?您正在尝试将年龄列添加到表或结果集中吗?我需要按年龄“分组”,因为我需要确定列表中最老的和最年轻的。原始数据就是上面的示例表。谢谢我很高兴这有帮助。欢迎您将此答案标记为正确答案。但请注意,平均每年有365天以上:)我很高兴这有帮助。欢迎您将此答案标记为正确答案。但请注意,平均每年有365天以上:)