PDA

View Full Version : سوال: اضافه یا کم کردن به مقدار با فرمت تاریخ



mina.net
چهارشنبه 28 اسفند 1387, 09:04 صبح
سلام دوستان
من می خوام هنگام select از بانک مقداری را به مقدار سال ، ماه و یا روزش کم یا زیاد کنم دوستانی که اطلاعات کافی دارند کمک کنند.
در ضمن تاریخ شمسی چرا در SQL ذخیره نمی شه و برای ذخیره به صورت شمسی چکار باید کرد .
سوال بعدی ام اینه که ایا اگه من تاریخ شمسی را به صورت string ذخیره کنم یا بعدا می تونم به صورت date تبدیل کنم و در گزارشاتم استفاده کنم.

EffatBandehlou
چهارشنبه 28 اسفند 1387, 10:03 صبح
دوست عزيز اگه شما نوع فيلدتون رو Date تعريف كنيد نمي تونيد تاريخ شمسي رو در اون ذخيره كنيد.لاجرم براي ثبت تاريخ شمسي بايد از string استفاده كنيد.
توابعي هستند كه به راحتي تاريخ شمسي رو به ميلادي و به عكس تبديل مي كنند.بنابراين تو برنامه مي تونيد از آنها استفاده كنيد.اما اگه بخواهيد از string براي تاريخ استفاده كنيد نمي تونيد از توابع پيش فرض sql براي كم و زياد كردن استفاده كنيد طبيعتاً در اينگونه موارد يا بايد تاريختون رو به ميلادي تبديل كرده و از نوع Date كنيد يا خودتون براش تابع مناسب بنويسيد

mina.net
چهارشنبه 28 اسفند 1387, 10:53 صبح
دوست عزيز اگه شما نوع فيلدتون رو Date تعريف كنيد نمي تونيد تاريخ شمسي رو در اون ذخيره كنيد.لاجرم براي ثبت تاريخ شمسي بايد از string استفاده كنيد.
توابعي هستند كه به راحتي تاريخ شمسي رو به ميلادي و به عكس تبديل مي كنند.بنابراين تو برنامه مي تونيد از آنها استفاده كنيد.اما اگه بخواهيد از string براي تاريخ استفاده كنيد نمي تونيد از توابع پيش فرض sql براي كم و زياد كردن استفاده كنيد طبيعتاً در اينگونه موارد يا بايد تاريختون رو به ميلادي تبديل كرده و از نوع Date كنيد يا خودتون براش تابع مناسب بنويسيد
دوست عزیز سلام
من نوع فیلد رو از نوع تاریخ گرفتم و برای اینکه بتونم در SQl ذخیره کنم 600 سال بهش اضافه می کنم و ذخیره می شه . اما هنگام select کردن می خوام اون 600 سال ازش کم بشه و کابر تاریخ واقعی رو ببینه اگه این دستور را می دونید به من بگید . یعنی چطور از تاریخ سال ذخیره شده دوباره 600 سال کم کنم . من اضافه کردن رو با دستورات VB.net انجام دادم. کم کردنش باید با SQL باشه چون من می خوام به صورت کلی باشه.

sjhosseini
چهارشنبه 28 اسفند 1387, 11:00 صبح
برای اضافه کردن روز و ماه و یا سال به تاریخ انتخابی خود در دستور sql میتونی از تابع dateadd استفاده کنی

EffatBandehlou
چهارشنبه 28 اسفند 1387, 11:09 صبح
همونطور كه دوست عزيز sjhooseini گفتند با استفاده از تابع DateAdd با interval منفي مي تونيد اينكارو بكنيد اما حواستون باشه كه اين حقه شما رو دچار مشكل مي كنه .در خصوص ماههاي 30 روزه شايد مشكلي پيش نياد اما در مورد ماههاي 31 روزه اگه معادل ميلادي اون 31 روزه نباشه به شما اجازه ثبت نميده
پس بهتره كه از حالا فكر عاقبتش رو بكنيد و يه راه اصولي و نه لزوماً راحت در پيش بگيريد.

mina.net
چهارشنبه 28 اسفند 1387, 15:03 عصر
همونطور كه دوست عزيز sjhooseini گفتند با استفاده از تابع DateAdd با interval منفي مي تونيد اينكارو بكنيد اما حواستون باشه كه اين حقه شما رو دچار مشكل مي كنه .در خصوص ماههاي 30 روزه شايد مشكلي پيش نياد اما در مورد ماههاي 31 روزه اگه معادل ميلادي اون 31 روزه نباشه به شما اجازه ثبت نميده
پس بهتره كه از حالا فكر عاقبتش رو بكنيد و يه راه اصولي و نه لزوماً راحت در پيش بگيريد.
سلام دوستان
بله من با همین مشکلی که شما گفتید برخوردم و امکان پذیر نیست . بعضی از دوستان در تالار vb.net پیشنهاد دادن که به صورت عدد ذخیره کنم یعنی به جای 15/10/1387 وارد کنم 13871015 و موقعی که می خوام دوباره از بانک برای کاربر نمایش بدم علامت / رو قرار بدم ولی نگفتن چطور این علامت ها رو هنگام select و نه یکی یکی وارد کنم . اگه می شه با ذکر مثال توضیح بدید ممنون می شم.