View Full Version : سردرگمی در ایجاد فیلدهای مربوط به زمان و تاریخ
mehdi-ghafari
پنج شنبه 13 مهر 1391, 21:26 عصر
سلام دوستان
من تا بحال هرجا که تو جدولم فیلدهایی مربوط به تاریخ و زمان داشتم از نوع DateTime استفاده میکردم
ولی چندجایی خوندم که با این نوع زیاد نمیشه مانور داد یا یه همچین چیزی :بامزه:
حالا میخوام بدونم بهترین نوع برای ذخیره اطالاعات مربوط به زمانم چیه؟
آیا مهر زمان رو ذخیره کنم خوبه؟ نوعش چی باشه؟
ممنونم از توجهتون
fakhravari
پنج شنبه 13 مهر 1391, 21:32 عصر
بستگی به خودتون داره و کارتون.
یه جایی فقط تاریخ نیازه
یه جایی همراه با ساعت
خوب بستگی به نیاز میتونید انتخاب کنید.
فیلد datetime باید 16 کاراکتر استاندارد لاتین خارجی وارد بشه.
خودم به شخصه از nchar استفاده می کنم در asp.net
چون تابع های مختلف برای تبدیل داره.
mehdi-ghafari
پنج شنبه 13 مهر 1391, 21:46 عصر
ممنون از توجهتون
بله من معمولا هم تاریخ و هم زمان(ساعت و دقیقه و ثانیه) رو نگه داری میکنم
من الان TimeSpan که گرفتم اینو تو خروجی داده 1349388739.20864
که مربوط به این تاریخه 04/10/2012 10:12:19 PM
واسه همین فکر کردم شاید بهتر باشه نوعش رو Double قرار بدم
یعنی درسته؟
behnam_one
شنبه 15 مهر 1391, 08:22 صبح
شما ميتونيد نوع تاريخ مورد نظر خودتون رو smalldatetime بگيريد چون بمراتب دقيق تر هستش و به راحتي تمام با دستور sql اون رو به هر شكلي كه خواستين دربيارين
به عنوان مثال كد هاي ذيل را در sql وارد كنيد و نتيجه رو ببينيد
SELECT convert(varchar,GETDATE(),1)
SELECT convert(varchar,GETDATE(),2)
SELECT convert(varchar,GETDATE(),3)
SELECT convert(varchar,GETDATE(),4)
SELECT convert(varchar,GETDATE(),5)
SELECT convert(varchar,GETDATE(),6)
SELECT convert(varchar,GETDATE(),7)
SELECT convert(varchar,GETDATE(),8)
SELECT convert(varchar,GETDATE(),9)
SELECT convert(varchar,GETDATE(),10)
SELECT convert(varchar,GETDATE(),11)
SELECT convert(varchar,GETDATE(),12)
SELECT convert(varchar,GETDATE(),13)
SELECT convert(varchar,GETDATE(),14)
mehdi-ghafari
شنبه 15 مهر 1391, 15:16 عصر
ممنون دوست عزیز
اینا رو اجرا کردم خیلی جالب بودن.
ولی خوب یک نکته:
آیا برای ساخت گزارش یا پروسه جستجو به مشکل بر نمیخورم با این روش؟
baktash.n81@gmail.com
یک شنبه 16 مهر 1391, 08:32 صبح
دوست عزیز ... واقعا خیلی می شه روی روشهای مختلف نگهداری تاریخ و زمان در Database بحث کرد ... (البته تاریخ شمسی) اگه شما پردازشهای زیادی روی تاریخ ها انجام می دید مثالا سیستم های حضورغیاب ... بهتره شما دیتا رو جوری نگهداری که واسه پردازش نیازی به تبدیل نداشته باشید ... مثالا رشته ای نگهداری نکنید ... و از همون Datetime استفاده کنید ... اگه قراره فقط تاریخ یه نامه یا تاریخ تولد رو نگهداری کنید و روش پردازشی انجام نمی دید زیاد فرقی نمی کنه که رشته نگهداری می کنید یا datet ime ... بعد از اینکه در خصوص نحوه نگهداری به نتیجه رسیدی باید در مورد نحوه تبدیل و استفاده از تاریخ فکر کنید ... در هر صورت از همه این روشها هم جواب می گیرید ... اما نکته اینجاست روشی رو انتخاب کنید و در مدت تولید یه برنامه به اون روش پایبند بمونید و هر جا از یک روش استفاده نکنید ...
من نگهداری تاریخ به صورت Datetime رو ترجیح می دم و همیشه اونو در لایه برنامه تبدیل می کنم به شمسی ... ( یکی از ایرادهایی که از این روش می گیرن موقعی هست که پشتیبان بخواد تاریخ ها رو دستی تغییر بده یا از بانک اطلاعاتی مستقیم گزارش بگیره که کلا ترجیح می دم اینکارو نکنه یعنی از نظر من ایراد محسوب نمی شه اما از نظر خیلی ها می شه)
behnam_one
یک شنبه 16 مهر 1391, 19:55 عصر
به نظر من مشکلی پیش نمیاد! چرا؟
چون اولا همیشه شما موقع گزارش گیری بازه تاریخ رو باید در نظر بگیرید
در ضمن حتما تاریخ رو بصورت میلادی به سمت دیتابیس پاس بدین و بر اساس تاریخ میلادی فیلترینگ روانجام بدین،سپس موقع نشان دادن اون رو به تاریخ شمسی در داخل کد برنامه کلاینتی خودتون تبدیل میکنیدواین کار باعث افت سرعت نمیشه فراخوانی نمیشه ، همیشه و در اکثر مواقع کندی سرعت در جداولی پیش میاد که تعداد رکوردهای اون از 3 میلیون بیشتر باشه و این با گذاشتن ایندکس و همچنین ترفند های خاص نظیر استفاده از Nolock هنگام فراخوانی جداول مشکل کندی هم حل میشه
mehdi-ghafari
یک شنبه 16 مهر 1391, 20:07 عصر
ممنونم از شما دوستان عزیز بابت راهنمایی های بسیار مفیدتون.
بله منم از همین روش استفاده میکنم همیشه. یعنی نوع فیلد رو DateTime و تاریخ رو بصورت میلادی در دیتابیس ذخیره میکنم. و بعد در سمت کلاینت با کامپوننت اونو به شمسی یا ... تبدیل میکنم.
الان مطمئن شدم که روشی رو که استفاده میکردم صحیح و کاملا اصولی بوده.
بازم تشکر میکنم از تمامی دوستان عزیزم
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.