• Grekin­na27
    Äldre 13 Aug 15:30
    6100 visningar
    3 svar
    3
    6100

    hur räkna ut ålder i PL SQL

    Hej, jag skulle vilja fråga någon innan jag river av mig håret. Vi håller på med PL SQL i oracle och jag kan inte förstå hur vi ska räkna ut alla människor i tabellens ålder.
    Vidare ska vi använda LOOP och Cursors men det får jag väl räkna ut på egen hand. Jag skulle bara vilja nån som kunde förklara hur man räknar ut alla kunders ålder.

    Tabellen ser ut såhär :


    CREATE TABLE bilägare(


    pnr VARCHAR2(11) PRIMARY KEY,


    fnamn VARCHAR2(20),


    enamn VARCHAR2(20),


    bor_i VARCHAR2(20),


    jobbar_i VARCHAR2(20));


     


    CREATE TABLE fordon(


    regnr VARCHAR2(6) PRIMARY KEY,


    pnr REFERENCES bilägare(pnr),


    tillverkare VARCHAR2(20),


    modell VARCHAR2(20),


    årsmodell NUMBER(4),


    hk NUMBER(4),


    datum DATE);

    Det vi ska få fram är egentligen anonymt block som skriver ut förnamn ,efternamn och ålder I ÅR med en decimal för alla personer i tabellen bilägare. Använd valfri cursor, explicit eller implicit och valfri LOOP. För och efternamn ska vara med stor begynnelsebokstav.
    Svaret ska bli:


    Hans, Rosenboll, 55,6 år.


    Tomas, Kvist, 50,7 år.


    Roger, Nyberg, 39,1 år.


    Lena, Malm, 33,4 år.


    Ollas, Bullas, 35,6 år.


    Tåmmy, Dåmert, 45,5 år.


    Rollf, Ekengren, 43,6 år.


    Maria, Stjärnkvist, 23,5 år.


    Leyla, Errstraid, 32,2 år.


    Arne, Möller, 66,6 år.

    Så hur 17 får jag fram åldern sådär? Mvh en som snart ger upp 


     


     
  • Svar på tråden hur räkna ut ålder i PL SQL
  • Äldre 13 Aug 15:56
    #1

    Jag gjord en sökning och fick bra träffar. Sökord: pl sql calculate age from date of birth

    Den här satsen bör räcka:
    ROUND((MONTHS_BETWEEN(sysdate,date_of_birth)/12),1) 

    Se till att mata in rätt date_of_birth så får du ut åldern. date_of_birth får du från pnr (personnummer). Tabellen fordon behöver du inte bry dig om för att få fram det du vill ha.

  • Grekin­na27
    Äldre 13 Aug 16:05
    #2
    sportpappa skrev 2012-08-13 15:56:36 följande:
    Jag gjord en sökning och fick bra träffar. Sökord: pl sql calculate age from date of birth

    Den här satsen bör räcka:
    ROUND((MONTHS_BETWEEN(sysdate,date_of_birth)/12),1 ) 

    Se till att mata in rätt date_of_birth så får du ut åldern. date_of_birth får du från pnr (personnummer). Tabellen fordon behöver du inte bry dig om för att få fram det du vill ha.
    Hej tack så mycket. Har också sökt ihjäl mig på google efter svar och såg något liknande men var orolig att det kanske inte stämde.  Men det ser bra ut, och kommatecknet finns med där också. Får se om jag lyckas lösa hela frågan nu med looparna och cursors... håller på att bli galen här xD 
    Tack ska du ha dock 
  • Tue 21 Dec 2021 19:23
    #3

    Hej!


    Sitter med samma uppgift. Men vet inte hur jag ska få ut datumet ur personnumret. Provat en hel del olika.
    Nu ser det ut såhär:


    declare 
    cursor c_bilägare is select initcap(fnamn), initcap(enamn), pnr
                                       from bilägare;


    v_fnamn bilägare.fnamn%type;
    v_enamn bilägare.enamn%type;
    v_pnr bilägare.pnr%type;


    --v_datum date := to_date(substr(v_pnr,1,8), 'YYYYMMDD');


    begin 
          if not c_bilägare%isopen THEN
          open c_bilägare;
          end if;


        loop
        fetch c_bilägare
        into v_fnamn, v_enamn, v_pnr;
        exit when c_bilägare%notfound;

    dbms_output.put_line(v_fnamn||', '||v_enamn||', '||round((months_between(sysdate,(to_date(substr(v_pnr,1,8), 'YYYYMMDD'))/12),1);


    end loop;


    close c_bilägare;
    end;
    /


    Malin
Svar på tråden hur räkna ut ålder i PL SQL