PDA

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



alizanganeh
سه شنبه 29 اردیبهشت 1394, 22:08 عصر
سلام و خسته نباشید

من کدی رو برای محاسبه آمار بازدید مثلا دیروز استفاده میکردم که تابحال مشکلی نداشت . ولی نمیدونم چرا وقتی تاریخ از 1394/02/29 میگذره اشکال میگیره و میگه تاریخ مشکل داره و باید بین دو تاریخی که میگه باشه .
کد sql و تعریف پارامترم اینه :

cmd.CommandText = "Select Sum(Today) from tblCounter where DATEDIFF(day, Tarikh, @Tarikh) = 1";
cmd.Parameters.Add("Tarikh", SqlDbType.NVarChar, 10).Value = GetDate.NowPersianDate(DateTime.Now);

عجیبه که وقتی تاریخ رو 2 روز میبرم عقب و مثلا میشه 1394/02/27 مشکلی نداره ، ولی وقتی میشه 1394/02/30 مشکل داره .

نوع فیلد تاریخ رو وقتی Date میذارم این مشکل هست . وقتی nvarchar میذارمش میگه که تابع DATEDIFF که توی کوئری هست نمیتونه string رو به تاریخ تبدیل کنه . کلا چیز عجیبیه .

داستان چیه بنظرتون ؟

salibsatan
چهارشنبه 30 اردیبهشت 1394, 09:08 صبح
شما در تاریخ های 29 و 30 و 31 اردیبهشت و 31 شهریور مشکل خواهید داشت.چون فوریه(ماه دوم میلادی) 29 روز هست و ماه دوم ما 31 روز.

alizanganeh
چهارشنبه 30 اردیبهشت 1394, 11:10 صبح
شما در تاریخ های 29 و 30 و 31 اردیبهشت و 31 شهریور مشکل خواهید داشت.چون فوریه(ماه دوم میلادی) 29 روز هست و ماه دوم ما 31 روز.


آها !
خوب راه حل چیه؟ یعنی همه این مشکل رو دارن ؟

salibsatan
چهارشنبه 30 اردیبهشت 1394, 11:24 صبح
طبق معمول بهتون توصیه می کنم تاریخ شمسی رو در توابع Sql و C# استفاده نکنید.همیشه تاریخ شمسی رو بگیرید، به میلادی تبدیل کنید و بعد هرکار می خواید باهاش انجام بدین.(و تو بانک ذخیره کنید)
بعد هم هروقت خواستین واکشی کنین، تاریخ رو به شمسی برگردونید

alizanganeh
چهارشنبه 30 اردیبهشت 1394, 12:11 عصر
طبق معمول بهتون توصیه می کنم تاریخ شمسی رو در توابع Sql و C#‎ استفاده نکنید.همیشه تاریخ شمسی رو بگیرید، به میلادی تبدیل کنید و بعد هرکار می خواید باهاش انجام بدین.(و تو بانک ذخیره کنید)
بعد هم هروقت خواستین واکشی کنین، تاریخ رو به شمسی برگردونید



یعنی به همین روش هیچ راهی نداره که مشکل در این تاریخ ها نداشته باشیم ؟