محاسبه اختلاف میان دو تاریخ
با سلام خدمت دوستانم ، من یه بانک اطلاعاتی SQL Server 2008 دارم که یک جدول به نام T داره و این جدول دارای 4 فیلد cod و Name و Famil و DateOzv هستش که فیلد cod یک کلید اصلی از نوع int هست و یکتا ، فیلد name نام شخص و از نوع nvarchar هست ، فیلد Famil نام خانوادگی شخص و از نوع nvarchar و در فیلد DateOzv تاریخ عضویت آن فرد به شمسی و از نوع nvarchar هستش.من می خوام که در خروجی به جای نمایش تاریخ عضویت مدت زمان عضویت را بر حسب سال نمایش بده .
مثلا در خروجی به جای نمایش : 1 محمد محمدی 05-02-1392
در خروجی نمایش بده مثلا : 1 محمد محمدی 2
آیا این امکان داره؟ با تشکر فراوان
2 پاسخ
با سلام.
دوست عزیز می تونید با استفاده از تابع Left چهار رقم سمت چپ تاریخ رو بدست بیارید (Left(dateOzv ,4
بعد نتیجه را با تابع Cast به فرمت عددی تبدیل کنید
در انتها عدد به دست آمده را از عدد 1394 کم کنید.
1- توضیحات فوق در محیط SQL Server قابل اجراست
2- ریزه کاریهای زیادی میتوان به توضیحات بالا اضافه کرد.
در VS یک تابع بنویسید یا یک استور پروسیجر در SQL به این نمونه توجه فرمایید
int retday(string strtdate, string enddate) { int temp = 0, temp1 = 0; int day = 0, day1 = 0; temp = Convert.ToInt32(strtdate.Substring(5, 2)); temp1 = Convert.ToInt32(strtdate.Substring(8, 2)); if (temp > 6) { day = 186 + (temp - 7) * 30; day += temp1; } else { day = (temp - 1) * 31; day += temp1; } temp = Convert.ToInt32(enddate.Substring(5, 2)); temp1 = Convert.ToInt32(enddate.Substring(8, 2)); if (temp > 6) { day1 = 186 + (temp - 7) * 30; day1 += temp1; } else { day1 = (temp - 1) * 31; day1 += temp1; } temp = Convert.ToInt32(strtdate.Substring(0, 4)); temp1 = Convert.ToInt32(enddate.Substring(0, 4)); if (temp1 == temp) { return day1 - day; else { return 365 - day + day1; } }
این تابع تاریخ شروع را بصورت 13940101 و تاریخ جاری را بصورت 13940218 دریافت و تعداد روز را محاسبه میکند