PDA

View Full Version : سوال: درج تاریخ با فرمت فارسی



pbiuki630
سه شنبه 06 بهمن 1388, 11:08 صبح
سلام دوستان
من نیاز دارم که تاریخ سیستم رو به صورت فارسی توی database ذخیره کنم،چه جوری باید این کارو کنم؟

corona
سه شنبه 06 بهمن 1388, 12:49 عصر
دوست من اگه نظر من رو میخوای همچین کاری رو نکن ( نظر شخصی من اینه) شما تاریخ رو به همون صورت میلادی توی دیتابیس ذخیره کن بعد توی برنامت با PersianCalender فارسیش رو به کاربرات نشون بده. وقتی تاریخ رو به همون صورت میلادی ذخیره کنی توی دیتابیس همه کامند های TSQL روش کار من کنن بدون مشکل مثلا Datediff, Dateadd,... ولی وقتی تاریخ هجری رو ذخیره کنی خیلی از این قابلیتها رو از دست میدی .

hakelberfin
سه شنبه 06 بهمن 1388, 13:26 عصر
دوستمون درست میگن . شما تاریخ رو در جداول اصلیتون حتما بصورت میلادی ذخیره کنید تا از بعضی توابع که مختص کار با نوع تاریخ هستند بهره مند بشد.
ولی میتونین یک View از همون Table ایجاد کنید و تابعی بنویسید که همون تاریخ میلادی رو تبدیل به شمسی کنه

mohammadi4net
سه شنبه 06 بهمن 1388, 13:59 عصر
هردو تاریخ شمسی و میلادی رو ذخیره کنید
اگه از توابع تبدیل تاریخ میلادی به شمسی داخل sql server استفاده کنید در تعداد زیاد رکوردها سربار اضافی ایجاد می شه من خیلی وقت سر این موضوع گذاشتم در نهایت با توجه به عدم وجود توابع تاریخ شمسی استاندارد در پایگاه داده ها به این نتیجه رسیدم که تاریخ میلادی و شمسی رو باهم ذخیره کنم و با توجه به شرایط از هرکدوم که خواستم استفاده کنم.
عیب این کار اینه که به هر رکورد اطلاعات شما چند ده بایت اضافه می شه که اگه 50000 رکورد در دیتابیس ذخیره کنید کمتر از از یک مگابایت به حجم پایگاه داده شما اضافه می شه ولی در عوض سرعت و کارایی برنامه بیشتر میشه ، حالا خودتون با توجه به شرایط تصمیم بگیرین که به نظر خودم جز در شرایط خاص این روش بهتره.

hakelberfin
سه شنبه 06 بهمن 1388, 14:48 عصر
منظور من از توابع ، توابعی مثل DATEDIFF و ... است . این توابع چه سرباری روی سیستم دارند.
شما هر وقت که لازمه از اینا استفاده میکنین. مثلا موقع ذخیره ی اطلاعات یک کارمند شما تاریخ تولد رو در دیتابیس ذخیره مکنید و موقعی که میخواین اطلاعات رو در دیتاگرید نشون بدید از این توابع در یک View استفاده میکنید و سن کارمند رو نشون میدید. این توابع هم روی تاریخ شمسی درست کار نمیکنن.
این روش کجاش سربار اضافی داره !؟

mohammadi4net
سه شنبه 06 بهمن 1388, 15:08 عصر
منظور من از توابع ، توابعی مثل DATEDIFF و ... است . این توابع چه سرباری روی سیستم دارند.
شما هر وقت که لازمه از اینا استفاده میکنین. مثلا موقع ذخیره ی اطلاعات یک کارمند شما تاریخ تولد رو در دیتابیس ذخیره مکنید و موقعی که میخواین اطلاعات رو در دیتاگرید نشون بدید از این توابع در یک View استفاده میکنید و سن کارمند رو نشون میدید. این توابع هم روی تاریخ شمسی درست کار نمیکنن.
این روش کجاش سربار اضافی داره !؟
من توابع شما رو نگفتم!؟ منظورم توابع تبدیل تاریخ میلادی به تاریخ شمسی که داخل خود sql server تعریف می کنند.
اگه فقط تاریخ میلادی رو ذخیره کنیم برای زمانیکه که تعداد زیادی رکورد از دیتابیس به داخل یک برنامه گزارش ساز ( کریستال ریپورت و ..) ارسال کنیم اون موقع باید یک تابع داخل کریستال ریپورت تعریف کنیم که تاریخ ها رو شمسی نشون بده و ...
اگه فقط تاریخ شمسی رو ذخیره کنیم که به قول دوستمون توابع Datediff, Dateadd,... رو از دست می دیم
ولی اگه تاریخ شمسی و میلادی رو باهم ذخیره کنیم دستمون بازه و با توجه به شرایط از هر نوع تاریخی که خواستیم استفاده می کنیم.

hakelberfin
سه شنبه 06 بهمن 1388, 15:21 عصر
شما میتونید خیلی راحت یه تابع بنویسد که این کارو انجام بده . گزارشها هم بهتره به جای اینکه مستقیما با Table در ارتباط باشن ، از یه View استفاده کنن . شما از این تابع در اون View استفاده کنین.
که سربارشم خیلی خیلی کمتر از دوبار ذخیره کردن تاریخه

corona
چهارشنبه 07 بهمن 1388, 09:51 صبح
دوست من، من توی یک پروژه تا 100000 رکورد ، بدون هیچ مشکلی کار کردم برای تبدیل تاریخ ( ولی خوب عملا این تعداد رکورد تو دیتابیس های تجاری اصلا رقمی نیست ) . تا حالا حجم دیتابیسهام از یک حدی بالا تر نزده ، ولی کاری که شما میگی هم میلادی هم شمسی رو ذخیره کنیم تو حجم بالای دیتابیس ، مخصوصا اگه به قول شما گزارش گیری هم داشته باشه واقعا مفید واقع میشه ( اینو توی برنامه های دوستام عملا دیدم که دارم میگم ) و در کل حرف شما رو کاملا قبول دارم .

Yasersadegh
چهارشنبه 07 بهمن 1388, 10:34 صبح
عرض سلام خدمت همه دوستان عزيز

سلام دوستان
من نیاز دارم که تاریخ سیستم رو به صورت فارسی توی database ذخیره کنم،چه جوری باید این کارو کنم؟
دوست عزيز
دوستان نظرات خوبي دارند كه هر كدوم در جاي خودش قابل استفاده است!!:تشویق: من هم مثل شما و تمامي دوستان به مشكلي كه فرموديد برخوردم:متفکر: و در نهايت اومدم يه كلاس برايه تاريخ نوشتم كه با تاريخ به شكل string كار مي كنه و تمام عمليات مورد نياز (خودم) در زمينه تاريخ از جمله توابعي كه دوستان فرمودند رو انجام ميده!!:لبخند: در اين حالت(حالت string) تاريخ ميلادي يا شمسي براش فرقي نميكنه و عمليات مختلف رو رويه اونها انجام ميده!!
شما هم اگه خواستيد مي تونيد از اين كلاس كه در پست زير قرارش دادم استفاده كنيد!!
http://barnamenevis.org/forum/showpost.php?p=892503&postcount=416

موفق باشيد:چشمک: