这是关于我想根据个人的社会保险号知道数据库中个人的年龄。所以sysdate-他们的出生日期采用合适的格式。想要的结果:约翰,母鹿,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;
答案 0 :(得分:0)
显然,这是非常近似的结果
因此,我们的约翰大约有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>