Kod:
Kod:
DECLARE
v_dob DATE:= to_date('&v_dob', 'MM/DD/YYYY'); -- copy this line and you'll be fine
v_your_age NUMBER(3, 1);
BEGIN
v_your_age := TRUNC(MONTHS_BETWEEN(SYSDATE, v_dob))/12;
DBMS_OUTPUT.PUT_LINE ('Your age is ' || v_your_age);
END;
/
I passed 01/01/2010. Got this in output:
Your age is 3.1
Källa: Stackoverflow
Det verkar funka men jag förstår inte koden helt ut.
1. Stämmer det att TRUNC() räknar ner datum till första dagen i månaden?
2. Är det en poäng med att skriva
Kod:
DATE:= to_date('&v_dob', 'MM/DD/YYYY');
Fyller '&' en funktion?
3. Är MONTHS_BETWEEN ett keyword i PLSQL?
4. Hur är det möjligt att genomföra beräkningar mellan två
olika datatyper 'date' och 'number'? Genererar MONTHS_BETWEEN en automatisk typomvandling av sysdate och därför gör det möjligt att senare dividera med 12? Har jag fattat rätt?