【发布时间】:2013-02-07 19:20:21
【问题描述】:
我正在开发一个简单的 PL/SQL 块,该块询问用户他们的出生日期并计算他们的年龄。我已经使用了months_between 除以12 转换,但是我在日期转换和用户输入的替换变量的日期方面遇到了问题。请忽略 v_birthday_year,因为这是我稍后必须集成的代码的另一部分。
我不确定用户必须输入的格式,即 05-07-1980 或 1978 年 3 月 6 日是否可以接受,以及如何根据输入的内容计算他们的年龄。
我想要的程序是编写一个 PL/SQL 程序,以 DD-MON-YYYY 这种格式接受用户的生日,并计算年龄在小数点后 1 位。所以我也需要计算到小数点后一位。
这是我所拥有的,但我不确定在替换变量输入处输入 DOB 的格式以及带一位小数的实际计算。我只是想看看哪里出了问题以及如何纠正它。
SET SERVEROUTPUT ON
DECLARE
--v_birthday_year NUMBER(4) := &v_birthday_year;
v_dob DATE := &v_dob
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;
/
【问题讨论】:
-
一年由 12 个月组成,而小数位以 10 为底计算 - 为什么要这样做?使用年份和月份显示年龄或仅显示年份更有意义。