PDA

View Full Version : حرفه ای: تعیین فرمت تاریخ برای عملکرد بهتر پروژه و جلوگیری از مشکلات



kamiloted
چهارشنبه 20 مرداد 1395, 01:17 صبح
سلام دوستان.

بنده تاریخ را با فرمت یا دیتا تایپ date در جدول اس کیو ال خود ذخیره میکنم.

و یک date picker روی فرم قرار دادم و تاریخ را با اون مشخص میکنم و در جدول ذخیره میکنم.

و این تاریخ به صورت میلادی در جدول ذخیره میشه.
و من برای نمایش اون رو تبدیل به شمسی میکنم.
و حتی برای جستجو بین 2 تاریخ مجبورم همین کار رو بکنم.وجستجو رو انجام بدم.
اما من تو یه فرمم اومدم تاریخ رو در جدول مربوطه به صورت nvarchar(50) ذخیره کردم و تاریخ شمسی رو به این صورت به جدول فرستادم و ذخیره کردم.که دیگه برای نمایش نیازی به تبدیل به میلادی و برعکس نداره.

cmd.Parameters.AddWithValue("@Dates", dateTimeSelector1.Text;);


البته قبلش که فرمت date بود به این صورت میفرستادم.

cmd.Parameters.AddWithValue("@Dates", dateTimeSelector1.Value.Value.Date);


و حتی جستجو رو هم بر اساس همین انجام دادم و جستجو انجام شد. و مشکلی نداشت.

حالا سوال من:
آیا ذخیره تاریخ شمسی با فرمت nvarchar(50) در جدول مشکلی ایجاد میکنه تو کل پروژه و گزارشات.؟؟
و همچنین جستجو بر اساس رشته آیا مشکل ساز نمیشه؟
آیا تو سرعت تاثیری داره؟
کلا چه معایب و مزایایی داره؟
و یا فرمت date چه برتری هایی نسبت به این داره.؟

ممنونم از همگی.

bomb23
چهارشنبه 20 مرداد 1395, 08:14 صبح
سلام
اول علتی که شما اینکار رو کردی علت خوبی نیست شما یک مبدل مینویسید که این کار رو انجام میده پس خیلی ساده تغییر تاریخ شمسی و میلادی صورت میگیره. اما در مورد ذخیره string واقعا کار پر دردسر و همچنین ایجاد کننده بار زیاد به سیستم هست. جدا از اینکه بخواهی مثلا چند روز به تاریخ اضافه کنی یا اختلاف سن دو نفر رو حساب کنی کار بسیار سختیه در کوئری های سنگین فاجعه رخ میده. در حالت عادی خود مایکروسافت خود datetime رو هم دیگه تایید نمیکنه و گفته حتما از datetime2 استفاده کنید چه برسه به string. نمونه ای که برای من وجود داشت این بود که داشتم کوئری سنگین از آمار بازدید میگرفتم تبدیل datetime به datetime2 رشد محسوسی برای کارایی سرعت خروجی داشت.
پس منم توصیه میکنم اصلا از datetime هم استفاده نکنید و datetime2 رو به کار بگیرید.

barnamenevisjavan
جمعه 22 مرداد 1395, 09:53 صبح
یه فیلد Nvarchar با حداکثر 10 کاراکتر ایجاد کن و سمت سی شارپ هم به این صورت میتونید تاریخ رو وارد کنید 1395/05/22

mrprestige
جمعه 22 مرداد 1395, 10:57 صبح
یه فیلد Nvarchar با حداکثر 10 کاراکتر ایجاد کن و سمت سی شارپ هم به این صورت میتونید تاریخ رو وارد کنید 1395/05/22

سلام دوست من عرض ادب وقتتون بخیر ، الان دوستمون جناب bomb23 (http://barnamenevis.org/member.php?245762-bomb23) در پست قبل که فرمودند . این کار اصولی نیست دوست من مناسب اینه که DateTime2 استفاده بشه این فرمایش شما داخل کوئری های سنگین مشکل ساز میشه البته لازم نیود اینارو عرض کنم اون دوستمون تمام و کمال توضیح داده بودن .

پیروز و موفق باشید .