چه جوری میتونم فقط زمان(ساعت) رو در دیتابیس ذخیره کنم که بعدا هم هنگام استفاده بتونم بهش دقایق یا ساعاتی رو اضافه یا کم کنم
در ضمن هنگام استفاده در C# اون رو تویه چه دیتا تایپی ذخیره کنم
Printable View
چه جوری میتونم فقط زمان(ساعت) رو در دیتابیس ذخیره کنم که بعدا هم هنگام استفاده بتونم بهش دقایق یا ساعاتی رو اضافه یا کم کنم
در ضمن هنگام استفاده در C# اون رو تویه چه دیتا تایپی ذخیره کنم
در C# نوع داده ای به نام DateTime موجود است که «زمان» را (تاریخ و ساعت و دقیق و ثانیه و میلی ثانیه!) را ذخیره می کند.
در SqlServer نیز نوع داده ای به نام DateTime موجود است که معادل همان c# است و همان داده ها را ذخیره می کند. می توانی عملیات چون جمع کردن یا مقایسه و .... روی این نوع داده انجام دهی.
یه سرچ تو اینترنت بزنی چیزای به درد بخوری می بینی.
سلام دوست عزیز
ولی من فقط میخوام زمان یعنی فقط ساعت مثل 12:30 رو ذخیره کنم
سلام
گفته های دوست قدیمی مان جناب hamidreza_buddy را که بعد از مدت های زیاد مجدداً این تالار را منور کردند، کاملاً تایید میکنم. :10:
==============
فرقی ندارد همچنان میتواند از datetime و یا بهتر از آن smalldatetime استفاده کنید.نقل قول:
ولی من فقط میخوام زمان یعنی فقط ساعت مثل 12:30 رو ذخیره کنم
شما میتوانید از روز چشم پوشی کنید و استفاده نکنید.
این روش شاید خیلی بی دردسر تر و ساده تر باشد.
==============
ولی یک راه جالب انقلابی دیگر هم وجود دارد.!!!
استفاده از متغییر short !!!
یعنی بیایید و تعداد دقایق را نگاه دارید.
مثلاً
ساعت 1:15 میشود 75 دقیقه
ساعت 8:10 میشود 490 دقیقه
(خود دات نت هم تاریخ را به همین صورت نگاه میدارد، ولی به جای دقیقه، از نانو ثانیه از اول میلاد مسیح استفاده میکند و نامش را ticks گذاشته.)
بعد هم به راحتی میتوانید عدد مذکور را برای یک زمان به دست اورید (hour*60 + minute) و هم به راحتی میتوانید با یک زمان جمع کنید.
به دست اوردن.
کد:DateTime d;
d = DateTime.Now;
//or
d = DateTime.UtcNow;
//or
d = new DateTime(1998, 5, 18);
//... d =
//... code
روش اول و ساده تر
short m = (short)(d.Hour * 60 + d.Minute);
روش دوم و خیلی کم سریعتر
short m = (short)((d.Ticks % 864000000000L) / 600000000L);
//m save in sqlserver database
حال برعکس میخواهیم عدد فوق را به تاریخ مشخص اضافه کنیم.
کد:DateTime d;
d = DateTime.Now;
//or
d = DateTime.UtcNow;
//or
d = new DateTime(1998, 5, 18);
//... d =
//... code
short m;
//m load of sqlserver database
روش اول و ساده تر
d = d.AddMinutes(m);
روش دوم و خیلی کم سریعتر
d = d.AddTicks(600000000L * m);
//or
d = new DateTime(d.Ticks + 600000000L * m);
خوب اگه میخوای تنها ساعت رو ذخیره کنی میتونی از Number استفاده کنی و Field Size رو Integer تعیین کنی.نقل قول:
بعد هم در #C میتونی از DateTime یا TimeSpan استفاده کنی و ساعات یا دقایقی رو بهش اضافه کنی. البته DateTime در اضافه کردن دقیقه و ساعت و ثانیه، متدهای آمادهای داره که کار رو راحتتر میکنه.