• 0
alroaini100

كيفية استخراج العمر من تاريخ الميلاد بالسنه والشهر واليوم

سؤال

السلام عليكم ورحمة الله وبركاته

 

كيف يمكن  استخراج العمر من تاريخ الميلاد بالسنه والشهر واليوم .....

هذا الكود لكن المشكله ان النتيجه ليست المطلوبه حيث ان القيمه تطلع بالسالب 

ارجو المساعد

وجزاكم الله الف خير

Declare @dateofbirth datetimeDeclare @currentdatetime datetimeDeclare @years varchar(40)Declare @months varchar(30)Declare @days varchar(30)set @dateofbirth='2007-11-23'--birthdateset @currentdatetime =getdate()--current datetimeselect @years=datediff(year,@dateofbirth,@currentdatetime)-- To find Yearsselect @months=datediff(month,@dateofbirth,@currentdatetime)-(datediff(year,@dateofbirth,@currentdatetime)*12)-- To Find Monthsselect @days=datepart(d,@currentdatetime)-datepart(d,@dateofbirth)-- To Find Daysselect @years  +' years,   ' [email protected] +' months,   '[email protected]   +' days' asYearMonthDay
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

3 إجابة على هذا السؤال .

  • 0

السلام عليكم

 

بالنسبة للسالب فقط اعكس التواريخ مثل

datediff(year,@currentdatetime,@dateofbirth)

او اضرب النتيجة ب -1

1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

وعليكم السلام ورحمة الله وبركاته 

اشكرك جدا اخي  الكريم 

بعد البحث استخدمت ABS() 

هذ ه تتجاهل القيمة السالبه ....

علي العموم ...النتيجه ما تطلع صحيحه  حتو لو اتجاهلنا السالب

7 سنة, -3 شهر, و 2 يوم

االناتج الصحيح 

6 سنة, 9 شهر, و 2 يوم

ارجو منك تساعدني 

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

من c-csharpconer وجت التعديل على نفس الاستعلامات لتصبح النتجية كما يلي :

Declare @dateofbirth datetimeDeclare @currentdatetime datetimeDeclare @years varchar(40)Declare @months varchar(30)Declare @days varchar(30)set @dateofbirth='2013-11-27'--birthdateset @currentdatetime =getdate()--current datetimeselect @years=datediff(year,@dateofbirth,@currentdatetime)-- To find Yearsselect @months=datediff(month,@dateofbirth,@currentdatetime)-(datediff(year,@dateofbirth,@currentdatetime)*12)-- To Find Monthsselect @days=datepart(d,@currentdatetime)-datepart(d,@dateofbirth)-- To Find Days--معالجة حالة السالبIF @days < 0BEGINIF @months > 0BEGINSET @months = CASEWHEN @days < 0AND @months - 1 <= 0THEN 12WHEN @days < 0THEN @months - 1ELSE @monthsENDENDELSEBEGINSET @months = 12 + @monthsSET @years = @years - 1PRINT @monthsENDDECLARE @day INTDECLARE @lastdayOfPrevMonth DATETIMESELECT @day = datepart(d, @currentdatetime)SELECT @lastdayOfPrevMonth = dateadd(d, - @day + @days, @currentdatetime)SELECT @days = datepart(d, @lastdayOfPrevMonth)PRINT @dayENDselect @years  +' years,   ' [email protected] +' months,   '[email protected]   +' days' as YearMonthDay
1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

من فضلك سجل دخول لتتمكن من التعليق

ستتمكن من اضافه تعليقات بعد التسجيل



سجل دخولك الان

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .