PDA

View Full Version : يافتن نزديكترين تاريخ به تاريخ كنوني از ميان تاريخ هايي كه در ديتابيس ذخيره شده اند



Ebrahim_Rayaneh
جمعه 27 خرداد 1390, 17:08 عصر
سلام
فرض كنيد يه ديتابيس داريم كه در يكي از فيلد هاي تيبل هاي آن تاريخ (به ميلادي=datetime) ذخيره مي كنيم به يه قطعه كدي احتياج دارم كه نزديكترين تاريخ به تاريخ كنوني را محاسبه كند و آن را برگرداند.البته من با سرچ كردن در اينترنت يه چيزي پيدا كردم اما نمي دونم چرا متغير closestdate در نهايت مقدار نمي گيره ؟!


//پيدا كردن آخرين زماني كه مشتري سفارش داده است
DateTime NowDate;
DateTime closestDate;
List<DateTime> theDates = new List<DateTime>();//load the date list, obviously
ds = sp.Select_Record("t_Factor", "DateIssuance", "", "", "", "");
foreach (DataRow row in ds.Tables["t_Factor"].Rows)
{
theDates.Add((DateTime)row["DateIssuance"]);
}

NowDate = DateTime.Today; //set to the file date
closestDate = DateTime.Today;
long min = Math.Abs(NowDate.Ticks - theDates[0].Ticks);
long diff;
for (int i = 0; i < theDates.Count; i++)
{
diff = Math.Abs(NowDate.Ticks - theDates[i].Ticks);
if (diff < min)
{
min = diff;
closestDate = theDates[i];
}
}

البته در توضيح بگم كه تابع Select_Record وظيفش فقط بازيابي كردن تاريخ هاي مورد نظر از ديتابيس ميباشد.
به نظر شما اين تابع اشتباه است يا اينكه مشكل از جاي ديگريست؟:متفکر:
آيا شما راه حل بهتري سراغ داريد؟

یوسف زالی
جمعه 27 خرداد 1390, 19:04 عصر
اگر منظور شما بزرگترین تاریخ کوچکتر از امروز هست:


select max(date) from Tbl where date <= @today

یا


select top 1 * from Tbl where date = (select max (date) from Tbl A where A.date <= @today )