PDA

View Full Version : درج تاریخ شمسی - بصورت عدد - در دیتابیس



Xcalivorse
چهارشنبه 09 مرداد 1387, 20:39 عصر
دوستان سلام. من همیشه با درج تاریخ شمسی در دیتابیس مشکل داشتم. بعد از یه کمی فکر یه روشی به ذهنم رسید که انجامش دادم و تا الان داره بهم کار میده. توی تاپیک های متعددی هم این مشکل عنوان شده.
در این روش ابتدا قسمت های مختلف یک تاریخ رو ( روز، ماه، سال) به صورت رشته درآورده و پس از چسباندن آنها بهم رشته مورد نظر رو تبدیل به عدد میکنیم. سپس عدد رو در دیتابیس ذخیره میکنیم.
توی عکس ضمیمه مراحل نشون داده شده.

برای ذخیر سازی عدد در دیتا بیس نیاز به فیلدی از نوع Int دارید که فقط 4 بایت اشغال میکنه (4 بایت کمتر از DateTime). و میتونید به راحتی با استفاده از آن Query بگیرید. هر جور که فکرشو بکنید. به راحتی میتونید داده های بین دو تاریخ خاص رو بازیابی کنید یا داده های یک تارخ مورد نظر رو همچنین داده هایی که مثلا در روز نهم (در تمام تاریخ ها یا در یک بازه محدود) درج شدند و... .
توجه کنید عدد های تک رقمی باید به صورت صفر به همراه عدد نشان داده شود مثلا 1 به صورت 01 باید به رشته مورد نظر چسبیده شود.
به امید خدا نمونه برنامه اش هم که تموم شد ضمیمش میکنم.
دوستان اگر عیب یا نقصی به ذهنتون میرسه لطفا بگین.
امیدوارم مطلب یاد شده براتون مفید باشه.
باتشکر.

رضا عربلو
چهارشنبه 09 مرداد 1387, 22:48 عصر
این روش برای فيلدهاي که می خواهید بر روی آنها محاسباتی انجام دهید شاید بکار آید (البنه فیلد DateTime مناسب تر است.) اما در گزارشاتتان که می خواهید به end user تاریخ شمسی را نشان دهید دارای ضعف هایی است (بار اضافی در کوئری)

Xcalivorse
چهارشنبه 09 مرداد 1387, 23:03 عصر
این روش برای فيلدهاي که می خواهید بر روی آنها محاسباتی انجام دهید شاید بکار آید
شاید نه حتما به کار میاد و تا الان که من باهاش کار کردم نه تنها دست و پا گیر نبوده بلکه در جاهایی خوب میشه روش مانور داد.

با این روش میشه برای تاریخ یک فیلد text در نظر گرفت که صرفا برای نمایش تاریخ استفاده بشه و برای انجام محاسبات از فیلد ذکر شده استفاده میکنیم.
و اما در مورد باز اضافی در کوئری باید بگم به حدی کم و نامحسوسه که حتی میشه گفت بار اضافی وجود نداره.

sinpin
پنج شنبه 10 مرداد 1387, 07:34 صبح
اين موضوع جديد نيست و دوستان قديمي تر بارها شاهد چنين موضوعاتي در همين سايت بوده اند،
لطفا در انتخاب تاپيك و عنوان آن دقت بيشتري داشته باشيد.

عنوان از "روشی جدید برای درج تاریخ شمسی در دیتابیس (براحتي آب خوردن)" به "درج تاریخ شمسی - بصورت عدد - در دیتابیس" تغيير يافت.