PDA

View Full Version : مقایسه دوتاریخ



salmah
جمعه 18 اردیبهشت 1394, 01:22 صبح
سلام
توی دیتابیسم یه تاریخی ثبت دارم مثلا1394/01/04
حالا میخوام کاربرکه تاریخی را وارد کرد ببینه بعد این تاریخ و توی سال 1394 هست یا نه
این تاریخ داینامیک هست
هم تو نوشتن پروسیجر هم توی asp.net

malloc
جمعه 18 اردیبهشت 1394, 01:29 صبح
سوالتون اصلا واضح نیست .... ضمنا تاریخ 1394/01/04 رو نمیشه توی اسکیول و توی فیلد Datetime ذخیره کرد ... مگه اینکه فیلدتونو nvarchar یا varchar گرفتید

salmah
جمعه 18 اردیبهشت 1394, 08:51 صبح
سوالتون اصلا واضح نیست .... ضمنا تاریخ 1394/01/04 رو نمیشه توی اسکیول و توی فیلد Datetime ذخیره کرد ... مگه اینکه فیلدتونو nvarchar یا varchar گرفتید
تاریخ را nchar(10) در نظر گرفتم.
توی جدولم یکی از فیلدا تاریخه
حالا میخوام وقتی کاربر تاریخی را وارد می کنه ببینه مربوط به سالی میشه که توی اون جدول هست .مثلا اگر توی جدول 1394/01/01
بود کاربر بتونه تا تاریخ 1394/12/29 زا انتخاب کنه

malloc
جمعه 18 اردیبهشت 1394, 18:10 عصر
شما یه فیلد داری که رشته ای هست و توش تاریخ شمسی نگه میداری ... بعد میخوای اونو توی اسکیوال چک کنی که با فلان تاریخ میلادی برابر هست یا نه ؟؟
من بنظرم نمیتونی همچین کاری کنی ..... بهتره اونیکی تاریخ رو هم بجای nchar همون date در نظر بگیری

بیتا حکمت
جمعه 18 اردیبهشت 1394, 18:58 عصر
اگه منظورتون رو درست متوجه شده باشم :
می تونید این کارو بکنید ، اون رشته رو برش بدید و تبدیل کنید به نوع عددی مثلا 94 . و همین کارو برای رشته ای که کاربر وارد کرده انجام بدین . اینجوری می تونید مقایسه کنید.

malloc
جمعه 18 اردیبهشت 1394, 21:20 عصر
اگه منظورتون رو درست متوجه شده باشم :
می تونید این کارو بکنید ، اون رشته رو برش بدید و تبدیل کنید به نوع عددی مثلا 94 . و همین کارو برای رشته ای که کاربر وارد کرده انجام بدین . اینجوری می تونید مقایسه کنید.
شما مطمعنی که اینجوری هم میشه توی اسکیو ال مقایسه انجام داد ؟؟؟؟
میتونن همچین مقایسه ای رو توی سی شارپ انجام بدن اما فکر نمیکنم توی اسکیول همچین چیزی منطقی و عملی باشه

salmah
جمعه 18 اردیبهشت 1394, 22:20 عصر
من مجبور شدم که یه فیلد دیگه به جدول اضافه کنم
وتاریخ شروع و پایان EndDATA,StartDATA
اینجوری مقایسه را انجام بدم


SELECT SUM(trequest.inumber) AS jamvorod FROM titems INNER JOIN trequest ON titems.id = trequest.id AND titems.StartDATA < trequest.dtarequest AND titems.EndDATA>= trequest.dtarequest AND trequest.ioutin = '1' AND titems.id = @id

salibsatan
شنبه 19 اردیبهشت 1394, 09:19 صبح
واقعا چرا تاریخ رو به صورت میلادی توی بانک ذخیره نمی کنید؟ مقدار ذخیره شده رو هم با یه تابع به تاریخ شمسی برگردونید؟اونطوری مقایسه و اختلاف گیری و ... همه رو به راحتی با توابع Sql میشه انجام داد

notlikeothers
شنبه 19 اردیبهشت 1394, 10:39 صبح
دوست عزیز بهترین کار اینه تاریخ را به صورت میلادی و به طور date timeدر sqlذخیره کنی.
موقع ریختن از متد شمسی به میلادی استفاده کن موقع خوندن از متد میلادی به شمسی.اینطوری میتونی از متد خوده sql هم استفاده کنی
شاید بعد کلی سرچ و ازمون خطا و ارور اخرش به همین برسی.