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天以上:)