ورود

View Full Version : سوال: ذخیره بازیابی و جستجوی تاریخ ایرانی در دیتابیس



mri_6889
سه شنبه 16 مهر 1392, 18:37 عصر
سلام دوستان. همانطور که میدانید، در دیتابیسها از تاریخ هجری شمسی پشتیبانی نمیشود. این در حالی است که در همه نرم‌افزارهای ایرانی با این نوع تاریخ سروکار داریم.
1- در انواع تکنولوژیهای بانک اطّلاعاتی دات نت مانند مانند SQL Query و Linq چگونه میتوان این تاریخها را ذخیره و بازیابی نمود.
2- در برنامه‌های تجاری مانند حسابداری و... یکی از بیشترین نوع جستجوها بین دو تاریخ است. چگونه به سریعترین و با بهترین بازدهی میتوان جستجوی بین دو تاریخ را انجام داد؟ با توجّه به اینکه اگر نوع فیلد تاریخ باشد، جستجوی بین آنها با دستور between در SQL انجام میشود. روش دیگر این است که تاریخ شمسی را در قالب عدد بدون قالب تاریخ مثلا بجای 1392/10/16 بصورت 13921016 ذخیره شده و جستجو بین اعداد با همان دستور between انجام شود. امّا این روش هم همیشه در جستجوی بین دو تاریخ جواب درست را نمیدهد.
3-روش دیگر این است که تاریخ را به میلادی ذخیره کتی. سپس هنگامی که کاربر دو تاریخ را برای جستجوی موارد بین دو تاریخ میدهد، این دو تاریخ را به معادل میلادی تبدیل کنیم و سپس بین تاریخهای میلادی جستجو کنیم. امّا در این روش باید یک فیلد اضافی هم برای تاریخ شمسی مثلا در قالب متنی یا nvarchar داشته باشیم، تا اینکه زمانی که جستجو انجام میشود، در نتایج جستجو این فیلد نمایش داده شود. امّا در پشت صحنه جستجو برا اساس فیلد تاریخ میلادی انجام شود. امّا بدی این موضوع هم ایجاد یک فیلد اضافی در بانک اطّلاعاتی است. ضمن آنکه مساله تبدیل تاریخ هم خود معضلی است.
4-روش دیگر این است که ذخیره فیلدها بر اساس تاریخ شمسی و بصورت متن باشد و در هنگام جستجو، تک تک فیلدها به میلادی تبدیل شده و در یک جدول موقّت به منظور انجام جستجو ذخیره شود
شما جه روشهایی را میشناسید؟ لطفا در این باره هرگونه مطلبی بلدید، بنویسید:متفکر:

artonline
سه شنبه 19 خرداد 1394, 12:24 عصر
سلام دوست عزیز:لبخندساده:
از لینک زیر راه حل را ببینید

http://programming.itpro.ir/tips/25304/%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-%D8%AA%D8%A7%D8%B1%DB%8C%D8%AE-%D8%B4%D9%85%D8%B3%DB%8C-%D8%AF%D8%B1-%D8%B3%DB%8C-%D8%B4%D8%A7%D8%B1%D9%BE

xsbehx
شنبه 23 خرداد 1394, 01:11 صبح
چرا روش دو جواب نمی ده ؟
مشکلش کجاست؟

hossein_rohollah
سه شنبه 19 آبان 1394, 20:35 عصر
دستتون درد نکند خیلی عالی بود