الانتقال إلى المحتوى

Function لحساب العمر


وليد علاء الدين

Recommended Posts

للي عاوز
Function لحساب العمر
انا عملتها معقدة شوية بس شغالة

create or replace function how_old (p_date varchar)
return varchar 
is 
birth_day timestamp(2) := to_date(p_date,'DD-MON-YYYY ');
today timestamp(2) := sysdate;
age varchar2(100);
begin age :='You are ' || to_char
(trunc(
(extract(
day from (today-birth_day))/30.4375)/12)
) 
|| ' years and ' || 
to_char(
trunc(
(mod(
(extract(
day from (today-birth_day))/30.4375)/12,1)*
365.25)/30.4375))
|| ' months and ' || 
to_char(
trunc(mod
((
mod(
(
extract(day from (today-birth_day))/30.4375)/12,1)*
365.25)/30.4375,1)*30.4375))
|| ' days and ' || 
to_char(
to_char(
round(
mod(
mod(
(mod(
(extract(
day from (today-birth_day))/30.4375)/12,1)*
365.25)/30.4375,1)*30.4375,1)*24,5))+  
(extract(
hour from (today-birth_day))) || ' hours and ' ||
to_char
(extract(
minute from (today-birth_day)))) || ' minutes.';
return age;
end;



Select HOW_OLD('12-jan-1982') from dual

Have fun

رابط هذا التعليق
شارك

create or replace function how_old (p_date varchar)
return varchar 
is 
birth_day timestamp(2) := to_date(p_date,'DD-MON-YYYY ');
today timestamp(2) := sysdate;
age varchar2(100);
begin age :='You are ' || to_char
(trunc(
(extract(
day from (today-birth_day))/30.4375)/12)
) 
|| ' years and ' || 
to_char(
trunc(
(mod(
(extract(
day from (today-birth_day))/30.4375)/12,1)*
365.25)/30.4375))
|| ' months and ' || 
to_char(
trunc(mod
((
mod(
(
extract(day from (today-birth_day))/30.4375)/12,1)*
365.25)/30.4375,1)*30.4375))
|| ' days and ' || 
to_char(
to_char(
round(
mod(
mod(
(mod(
(extract(
day from (today-birth_day))/30.4375)/12,1)*
365.25)/30.4375,1)*30.4375,1)*24,5))+  
(extract(
hour from (today-birth_day))) || ' hours and ' ||
to_char
(extract(
minute from (today-birth_day)))) || ' minutes.';
return age;
end;

رابط هذا التعليق
شارك

create or replace function how_old (p_date varchar)
return varchar
is
birth_day timestamp(2) := to_date(p_date,'DD-MON-YYYY ');
today timestamp(2) := sysdate;
age varchar2(100);
begin age :='You are ' || to_char
(trunc(
(extract(
day from (sysdate-birth_day))/30.4375)/12)
)
|| ' years and ' ||
to_char(
trunc(
(mod(
(extract(
day from (sysdate-birth_day))/30.4375)/12,1)*
365.25)/30.4375))
|| ' months and ' ||
to_char(
trunc(mod
((
mod(
(
extract(day from (sysdate-birth_day))/30.4375)/12,1)*
365.25)/30.4375,1)*30.4375))
|| ' days and ' ||
to_char(
to_char(
round(
mod(
mod(
(mod(
(extract(
day from (sysdate-birth_day))/30.4375)/12,1)*
365.25)/30.4375,1)*30.4375,1)*24,5))+
(extract(
hour from (sysdate-birth_day))) || ' hours and ' ||
to_char
(extract(
minute from (sysdate-birth_day)))) || ' minutes.';
return age;
end;

رابط هذا التعليق
شارك

انضم إلى المناقشة

يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.

زائر
أضف رد على هذا الموضوع...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   تمت استعادة المحتوى السابق الخاص بك.   مسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

جاري التحميل
×
×
  • أضف...

برجاء الإنتباه

بإستخدامك للموقع فأنت تتعهد بالموافقة على هذه البنود: سياسة الخصوصية