したがって、この質問はプログラミングクラスでさまざまな形で尋ねられるようです。私はこれがトリガーや関数などで尋ねられるのを見てきました。プログラムのうるう年の部分を計算しました。誕生日から年齢を計算する方法はいくつかあります。365.25で割るか、月の間隔で割るか、おそらくこれを最善の方法で行うには他のいくつかの方法があります。
Ageの計算に問題があり、他のプログラムでこれを実行し、特にPL / SQL for Oracle Devでこれをプログラミングすると、情報が過負荷になります。
これは、SQL SERVERでどのように行われるかを示しています 。SQLServerを使用して、sysdateとbirthdateから年齢を計算します。
これはトリガーを使用しており、似ていますが、私が探しているものとはまったく異なります。 oracle plsqlトリガーを使用して誕生日から年齢を計算し、年齢を表に挿入します
誕生日を受け入れるためのPL/SQLブロックを記述します。年齢を小数点以下1桁を含む年数で計算して印刷します。また、誕生年がうるう年かどうかも確認します。「私の誕生年はうるう年です」のようなメッセージを印刷します。または「私の誕生年はうるう年ではありません。」ヒント:うるう年を決定するには、年を4で正確に割り切れるが、100で割り切れないようにするか、400で割り切れる必要があります。
SET SERVEROUTPUT ON
DECLARE
v_birthday_year NUMBER(4) := &v_birthday_year;
v_your_age NUMBER(4, 1);
v_leap_remainder1 NUMBER(5, 2);
v_leap_remainder2 NUMBER(5, 2);
v_leap_remainder3 NUMBER(5, 2);
BEGIN
v_leap_remainder1 := MOD(v_birthday_year, 4);
v_leap_remainder2 := MOD(v_birthday_year, 100);
v_leap_remainder3 := MOD(v_birthday_year, 400);
IF ((v_leap_remainder1 = 0 AND v_leap_remainder2 <> 0 )
OR v_leap_remainder3 = 0)
THEN
DBMS_OUTPUT.PUT_LINE(v_birthday_year || ' is a leap year');
ELSE
DBMS_OUTPUT.PUT_LINE (v_birthday_year || ' is not a leap
year');
END IF;
TO_CHAR(SYSDATE, 'DD-MM-YYYY')
v_your_age := (MONTHS_BETWEEN(TRUNC(SYSDATE), v_birthday_year)/12);
DBMS_OUTPUT.PUT_LINE ('Your age is ' || v_your_age);
END;
/
実際、私はそれを理解しました。これは、生年月日、生年月日、生年月日、および年齢の個別の変数である、dobのto_date変換でした。年齢は小数点以下1桁まで計算されます。Trunc(x、1)これでうまく機能します。