ايران ويج

نسخه‌ی کامل: نمايش تاريخ بصورت شمسي
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
صفحه‌ها: 1 2
(۱۹-اردیبهشت-۱۳۸۹, ۲۳:۵۶:۲۶)HoseinVig نوشته است: [ -> ]مبین جان تبدیل تاریخ حتی 1000 رکود کار سنگینی نیست چون فقط یک بار اجرا میشه (در کلاینت) اما اگه این کار رو توی سرور داشته باشیم آره میشه گفت کمی سنگین میشه (اونم در مواردی که تعداد کاربران سرور انگشت شمار نباشه)
حسین جان 1 بار که انجام نمیشه در هر بار select شما باید تاریخ ها رو تو سلکتت به شمسی تبدیل کنی
مثلا خروجی یک سلکتت نمایش فروش از تاریخ 1388/02/01 هست تا تاریخ 1388/03/01 خب خروجی ها مثلا 100 تا رکورد هست شما نمی تونی تاریخ میلادی تو بانک رو نشون بدی بلکه قبل از نمایش باید table یا query خروجیتو با یه حلقه پیمایش کنی و تاریخ ها رو از میلادی به شمسی تبدیل کنی

حالا یه سلکت میزنی برای چک های وصول نشده مثلا تاریخ ها از 5 ماه پیش تا دیروز هست خب شما باید کوئری خروجی این سلکت رو هم از میلادی به شمسی تبدیل کنی و به کاربر نشون بدی

شما یک نگاه به تا بع تبدیل میلادی به شمسی بنداز این همه دستورالعمل برای تبدیل تاریخ هر رکورد باید انجام بشه
پس 1 بار تبدیل وجود نداره
البته اوردن اینجور پردازشها از سمت سرور به کلاینت کار عاقلانه ای هست

البته بعضی ها یک کار دیگه میکنن در جدول 2 رکورد برای تاریخ در نظر میگیرن 1 فیلد تاریخ میلادی ثبت میشه 1 فیلد تاریخ شمسی جستجو ها بر اساس تاریخ میلادی انجام میشه و در خروجی تاریخ شمسی قید میشه اینجوری هیچ پردازش اضافی صورت نمیگیره ولی در عوض ایجاد یک فیلد اضافه و افزونگی و این مسایل

نقل قول: در رابطه با روش شما هم الان حضور ذهن ندارم ولی قبلا یادم هست که چند تا نقص ازش پیدا کرده بودم...
خوشحال میشم مشکلاتشو بدونم چون از این روش برای برنامه چند جا استفاده کردم
از یک بار اجرا منظورم یک بار اجرا روی سلکت بود(روی تکتک رکورد ها)
در هر صورت تشکر ، بحث خوبی بود
برای دیتابیس های تا متوسط فکر نکنم یه همچین محاسبه هایی برای سرور مشکلی داشته باشه. من ترجیح میدم فیلد رو همون date تعریف کنم و دو تا تابع برای تبدیلش به/از شمسی بنویسم ( توی خود db ). اینجوری هر جور سرچ و فیلتری بر اساس میلادی/شمسی بخوام میتونم انجام بدم. بار زیادی هم فک نکنم وارد کنه.
برای دیتابیس های بزرگ و پر ترافیک ...
نقل قول: فرایند رو تحت کلاینت بیاری فقط اون بار رو از رو سرور به کلاینتها منتقل میکنی
در کلاینتها با استفاده از application شما باید تو یه حلقه تمام رکوردها رو پیمایش و روال تغییر تاریخ و زمانبر بودن به قوت خودش باقیه

از sql2005 به بعد شما میتونین یک دیتا تایپ مجازی برای خودتون ایجاد کنید با استفاده از این قابلیت شما میتونین یک دیتاتایپ برای تاریخ شمسی به sql server اضافه کنین و ازش استفاده کنین
(منظورم این بود ، تو پست 6 فکر کنم منظورمو بد رسوندم)

من به شخصه از این روش استفاده میکنم

ابتدا ما فیلد تاریخ رو به صورت int در نظر بگیریم و موقع وارد کردن اطلاعات // های بین تاریخ رو برداریم یعنی 1388/01/07 رو به صورت 13880107 وارد میکنیم و با استفاده از یک تابع در سمت sql در هنگام نمایش خروجی // ها رو به خروجی اضافه می کنیم

راه استفاده از دستورات مثل Between یا datePart , یا Datediff تو این روش به چه شکلیه چون در اکثر پروژه ها این توابع نیازه

میتونی یه آمار خیلی معمولی از پروسه تبدیل بدی تا یه خورده ارزش این کار مشخص بشه .
صفحه‌ها: 1 2