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 |
|
|
|
|
|