PDA

View Full Version : محاسبه سن از روی فیلد تاریخ تولد



aliyeh
چهارشنبه 13 مهر 1390, 11:45 صبح
سلام دوستان
من یک جدول دارم که اطلاعات شخصی افراد رو نگهداری میکنه.
حالا می خوام از فیلد birthdate که در این جدول وجود داره سن افراد رو محاسبه کنم و افرادی که سنشون بالاتر از مثلا 20 ساله نمایش بدم.
میشه لطف کنید و بگید چطور می تونم این کارو انجام بدم.

یوسف زالی
چهارشنبه 13 مهر 1390, 12:38 عصر
سلام.
در همین جا بگردید دنبال محاسبه اختلاف دو تاریخ.
اختلاف امروز رو با تولد ایشون بدست بیارید.

aliyeh
چهارشنبه 13 مهر 1390, 15:44 عصر
ببینید من مشکلی با محاسبه سن از روی تاریخ ندارم.خودم تابع این کار رو نوشتم.
فقط نمی دونم باید چطور دقیقا زمانیکه می خوام اطلاعات رو از دیتابیس بخونم و در گریدویو نمایش بدم از این تابع استفاده کنم.
فرض کنید اسم تابعی که این کار رو انجام میده agec هست که یک پارامتر ورودی داره و این پارامتر ورودی همون فیلد birthdate هست.حالا من می خوام دستور select رو بنویسم
select * from TB_Char where birthdate
بقیشو نمی دونم باید چطور بنویسم

یوسف زالی
چهارشنبه 13 مهر 1390, 16:14 عصر
select * from TBL where dbo.agec(birthday)> 20

aliyeh
پنج شنبه 14 مهر 1390, 08:41 صبح
ببخشید الان این dbo.agec که نوشتید چی هست؟ یک store procedure است؟
من تابع محاسبه سن رو با c# نوشتم
البته هنوز کامل نیست
public static int Age_caculate(string birthdate)
{

char[] sep = { '/' };
PersianCalendar ps = new PersianCalendar();
string date = ShamsiDate.GetFarsiDate(DateTime.Now, true);
string[] arrDate = date.Split(sep);
int month = Convert.ToInt32(arrDate[1]);
int day = Convert.ToInt32(arrDate[2]);
int year = Convert.ToInt32(arrDate[0]);


string[] birthDate = birthdate.Split(sep);
int birthmonth = Convert.ToInt32(birthDate[1]);
int birthday = Convert.ToInt32(birthDate[2]);
int birthyear = Convert.ToInt32(birthDate[0]);

int agy;

int agm;

int agd;

int age;

agy = year - birthyear;

agm = month - birthmonth;

agd = day - birthday;

if (((agm == 0) && (agd < 0)) || (agm < 0))

age = agy - 1;

else

age = agy;

return age;

}

این دستور select ای نوشتید رو من کجا باید بنویسم؟
میشه کامل توضیح بدید من در sql تازه کارم

یوسف زالی
پنج شنبه 14 مهر 1390, 17:14 عصر
شما باید تابع رو در SQL بنویسید.
در مورد نوشتن تابع هم در همین تالار جستجو کنید.

WindowsXp
چهارشنبه 20 مهر 1390, 23:18 عصر
دوست عزیز نمی دونم نیازت چجوریه !
اما سن رو به راحتی از طریق عبارت :


Year(GetDate()) - Year(Birthdate)

می تونی به دست بیاری !