PDA

View Full Version : تبدیل تاریخ میلادی به شمسی



saeeedft
پنج شنبه 12 آذر 1388, 19:20 عصر
با سلام، دوستان من اطلاعات رو به صورت میلادی توی دیتا بیس ذخیره میکنم، حالا موقعی که میخوم اطلاعاتو نشون بدم اونو به شمسی برمیگردونم، تا اینجاش حله، اما نمیدونم این کارو چطور برای کل ستون های دیتا ست قرار بدم، هر کدی مینویسم یا کل سطر رو به یه تاریخ شمسی(مثلا همه رو 1388) مینویسه یا تبدیل نمیکنه، دوستان ممون میشم رانمایی کنید، فقط دوستان دقت کنند من کد تبدیل میلادی به شمسی رو نمیخوام، کل کار من اینه که نمیدوم این کار رو چطور برای کل سطرهای دیتاستم انجام بدم، من با for،foreach امتحان کردم به نتیجه نرسیدم

ali_autumnal
پنج شنبه 12 آذر 1388, 20:37 عصر
سلام
دوست عزیز میشه بفرمائید چرا اول میلادی ذخیره میکنید؟
واقعا واسم سوال پیش اومد!!

saeeedft
پنج شنبه 12 آذر 1388, 20:50 عصر
نه میلادی ذخیره نمیکنم:قهقهه: حق با شماست اشتباه منظورمو رسوندم، من توی فرمم شمسی مینویسم، بعد موقع ثبت تبدیل میشه به میلادی و توی دیتا بیس میلادی نشون داده میشه، حالا دوباره میخوام موقع بازیابی و نشان دادن توی دیتا گرید به شمسی تبدیلش کنم، من زمانی که توی دیتا ست میریزم اونجا باید تارخ های هر سطر رو دوباره به شمسی تبدیل کنم،حالا من کدی میخوام که بتونه توی هر سطر فیلد تاریخو بیرون بکشه، توی این موندم،

iman_tavajoh
پنج شنبه 12 آذر 1388, 21:30 عصر
در دیتا ست فیلدی که قراره تاریخ رو نمایش بده از نوع char انتخاب کن نه از نوع
date

saeeedft
پنج شنبه 12 آذر 1388, 21:52 عصر
در دیتا ست فیلدی که قراره تاریخ رو نمایش بده از نوع char انتخاب کن نه از نوع
date]اقا من اطلاعاتو از دیتا بیس میگیرم، اونجا datetime هستش، نمیشه که char در نظر گرفتش، هر تبدیلی هم انجام میدم جواب نمیده

پایلوت
پنج شنبه 12 آذر 1388, 22:11 عصر
سلام دوست عزیز
تاریخ شمسی خودتون رو در databace به صورت char ذخیره نمایید و حتما معادل میلادی آن نیز در هر ستون ذخیره می شود.
حال برای باز یابی اطلاعات از تاریخ ها شمسی (برای نمایش و بدون نیاز به هیچ تبدیلی) و برای محاسبات از تاریخ میلادی استفاده کنید.
من خودم این روش رو استفاده می کنم.
موفق باشید.

saeeedft
پنج شنبه 12 آذر 1388, 22:52 عصر
دوستان کسی نظر دیگه ای نداره، من دیگه نمیخوام دیتا تایپم رو دوباره برم عوض کنم، از همون اول datetime گرفتم، ضمنا دوست عزیز منظورتون از این جمله رو نفهمیدم

حتما معادل میلادی آن نیز در هر ستون ذخیره می شود.

پایلوت
جمعه 13 آذر 1388, 01:10 صبح
دوستان کسی نظر دیگه ای نداره، من دیگه نمیخوام دیتا تایپم رو دوباره برم عوض کنم، از همون اول datetime گرفتم، ضمنا دوست عزیز منظورتون از این جمله رو نفهمیدم


سلام
منظورم اینه که شما بعد از تبدیل تاریخ شمسی خودتون (که فقط از نوع char می باشد)به میلادی هر دوی اونها رو که متناظر هم هستند در پایگاهتون ذخیره کنید.

saeeedft
جمعه 13 آذر 1388, 10:27 صبح
مهندسین و استادان عزیز کسی نبود؟ من فقط درگیر یه تیکه کد هستم که باهاش بتونم سطرهای دیتا ست رو یکی یکی مرور کنم و تاریخ اونو به شمسی تبدیل کنم

saeeedft
یک شنبه 15 آذر 1388, 11:02 صبح
عزیزان من هر کاری کردم نشد که نشد،یعنی کسی تا به حال به این طریق عمل نکرده؟؟؟؟؟؟؟؟؟؟؟

SabaSabouhi
دوشنبه 16 آذر 1388, 14:43 عصر
با سلام
خیلی ساده هست.
من یک user-function نوشتم ( در SQL) که این کار رو انجام می‌ده. کافیه توی select هر جا که تاریخ داری تابع dbo.SDateStr رو صدا کنی تا تاریخ میلادی رو برات شمسی کنه. هیچ کار دیگه‌ای هم لازم نیست انجام بدی. این تابع رو به تالار SQL قبلاً فرستادم، جستجو کن پیداش می‌کنی.

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