PDA

View Full Version : سوال: برای نگهداری زمان در SQL Server از چه Data Type ای استفاده کنم؟



peymanjon
دوشنبه 12 مهر 1389, 15:45 عصر
سلام من یک رشته به صورت 10:03AM را می خواهم در sql ذخیره کنم. به نظر شما فیلد دیتابیس را از نوع (7) time تعریف کنم یا timestamp ؟

محبت کنید اگه راه بهتری به ذهنتون می رسد که من در دیتابیس این رشته را ذخیره کنم که در مرحله بعد که قصد مقایسه زمانها را دارم به مشکل نخورم ، به من بگوئید.

فیلد دیتابیس را time گرفتم و اینجوری نوشتمش:

TimeSpan ts1;


int pm=0;
if (txtTime.Text.Substring(5,2).ToString()=="PM")
{
pm = 12;
}
ts1 = new TimeSpan(Convert.ToInt32(txtTime.Text.Substring(0, 2)) + pm, Convert.ToInt32(txtTime.Text.Substring(3, 2)), 0);

mehdi.mousavi
دوشنبه 12 مهر 1389, 16:40 عصر
سلام.
طبیعتا باید از فیلد time استفاده کنید، چون timestamp اصلا کاربردهای دیگه ای داره.
اما در مورد کدی که نوشته اید بهتره بدین شکل عمل کنید:


string timeString = "10:03 AM";
TimeSpan ts = DateTime.Parse(timeString).TimeOfDay;
if (ts.Hours >= 0 && ts.Hours < 12)
{
//AM
}
else
{
//PM
}


البته با فرض اینکه ورودی کاربر رو خودتون Validate خواهید کرد... اینطوری دیگه لازم نیست توی string دنبال AM/PM بگردید، و در صورتیکه فردا Locale برنامه تغییر کرد، میتونید براحتی IFormatProvider مورد نظرتون رو به DateTime.Parse بدید و بازهم کد شما کار خواهد کرد.

برای اطلاعات بیشتر در زمینه نگهداری زمان و تاریخ و چگونگی Mapping بین این Data Type ها با Data Type های مشابه در SQL Server، به این آدرس (http://msdn.microsoft.com/en-us/library/bb675168.aspx) مراجعه کنید.

موفق باشید.