回答

收藏

Oracle PL / SQL,如何使用简单的替换变量和months_between计算从出生日期

技术问答 技术问答 214 人阅读 | 0 人回复 | 2023-09-12

我正在学习一个简单的东西PL /
! [7 B! c2 s! \9 FSQL块,询问用户的出生日期,计算其年龄。我已经用过了。months_between除了12个转换,无法从用户输入的日期转换和日期输入替换变量。v_birthday_year,因为这是我以后要集成的代码的另一部分。
/ n9 N' P" O! G7 u$ e4 @/ d我不确定用户必须输入的格式(例如05-07-是否可以接受1980或1978年3月6日),以及如何根据输入计算年龄。
/ L- _6 M- D% P( v0 o7 _6 \' O我想要的程序是写一个PL / SQL程序以DD-MON-YYYY接受用户的生日,并以1个小数位计算年龄。
2 T, D: L" d1 I0 @6 m因此,我也需要计算出小数点的后者。
3 J$ O% D9 q& o& b
这是我所拥有的,但我不确定在替代变量输入和实际计算中使用小数点的后者DOB中键入哪种格式。我只想看看我要去哪里,怎么纠正。
6 g0 ~1 @- B3 i2 g4 @SET SERVEROUTPUT ONDECLARE  --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;                  
7 c- O; S) m& L' h: S    解决方案:                                                               
2 s$ k+ g+ c9 c- @                                                                除非你在学习PL / SQL否则,从我自己和我那里得到的所有知识SQL例子可能是更好的选择。这是我想出的:4 O- e9 P5 i$ M/ l5 c2 m
    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另一个SQL示例:+ u1 h3 ?) Q% P  D7 N2 J2 }  n& y
SELECT empno,ename,hiredate    ,TRUNC(MONTHS_BETWEEN(sysdate,hiredate)/12) years_of_service   FROM scott.emp
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则