这是关于我想根据他们的社会安全号码知道数据库中个人的年龄。所以sysdate - 他们的出生日期是适合的格式。想要的结果:John,Doe,45,6年。表数据:
表:
pnr VARCHAR2(13) value'19790343-7899'
我一定错过了一些明显的东西。这是我到目前为止的代码:(包括一些测试代码)
关于约会的一切
- 完整代码,尝试如下 -
declare
cursor c_åldrar is
select fnamn,enamn,(sysdate - to_date(substr(pnr,1,6),'yyyymm')) / 365
from bilägare;
begin
for rec in c_åldrar
loop
dbms_output.put_line(rec.fnamn||', '||rec.enamn||', '||rec.pnr||', '||sysdate);
end loop;
end;
/
-- Attempt 1
select fnamn,enamn,sysdate - to_date(substr(pnr,1,6),'yyyymm')
from bilägare;
-- Attempt 2
select fnamn,enamn,(sysdate - to_date(substr(pnr,1,6),'yyyymm')) / 365
from bilägare;
这显然是非常近似的结果
因此,我们约翰约有40年。约翰生日快乐。
SQL> with bilagare (fnamn, enamn, pnr) as
2 (Select 'John', 'Doe', '19790343-7899' from dual)
3 select fnamn,
4 enamn,
5 round((trunc(sysdate) - to_date(substr(pnr, 1, 6), 'yyyymm')) / 365, 1) yrs
6 from bilagare;
FNAM ENA YRS
---- --- ----------
John Doe 40,1
SQL>