مرجع تخصصی برنامه نویسان

بزرگترین انجمن برنامه نویسان فارسی زبان

string was not recognized as a valid datetime مشکل

پنج شنبه, 29 فروردین 1398 01:41

string was not recognized as a valid datetime مشکل

با سلام ، پروژه من ویندوز فرم و با زبان سی شارپ هست لذا برای تاریخ  از یک کامپوننت برای انتخاب تاریخ استفاده کردم ، حالا مشکل اینجاست که بعضی تاریخ ها رو ثبت نمیکنه ، جمع یا تفریق نمیکنه درواقع بعضی روز های خاص هستند ، مثلا 31 شهریور ، 29 و 30 و 31 اردیبهشت همچنین...

اول فکر کردم از کامپوننت هست ، عوض کردم و کل تاریخ ها عوض شد و با بدبختی جایگزین کردم ولی دیدم بازم همین خطا رو روی این تاریخ ها میده ، رفتم خود فیلد دیتا بیس و تاریخ رو دستی 98/2/29 زدم که دیدم بله.. اصلا همچین تاریخی رو میگه وجود نداره ، حالا اصلا نمیدونم چطوری باید این مشکل رو حل کنم ، اون فیلد دیتا بیس من از نوع Date هست ، وقتی nvarchar(10) کردم با موفیت ذخیره شد ولی خب دیگه نمیتونم بخونمش متاسفانه... یکی بگه این تاریخ ها رو چطوری میشه حل کرد؟ تاریخ من شمسی هست ولی ماه فبریه کلا 28 روز داره!! واسه همین نمیزاره دیتابیس که 29 و 30 و 31 داخلش ذخیره بشه.. 

پنج شنبه, 29 فروردین 1398 09:28

سلام

شما در فیلد تاریخ میلادی میخواهید تاریخ شمی نگهداری کنید؟!

بهتره تاریخ میلادی ذخیره کنید و در نمایش تبدیل به شمسی بکنید.

یا می تونید دوتا فیلد تاریخ یکی میلادی و یکی شمسی ذخیره کنید با این تفاوت که تاریخ شمسی باید nvarchar باشد

کسانی که از این پست تشکر کرده اند : rasool65,
جمعه, 30 فروردین 1398 15:11

مرسی چه پیشنهاد خوبی ! آره دوتا تاریخ میکنم و لیست ام رو برای نمایش از شمسی میخونم و مقایسه تاریخ ها و اعمال تغییرات و شرط ها رو با میلادی انجام میدم ... 

ممنونم..

الان من نزدیک 1000 تا رکورد دارم در جدول دیتا بیس ام ،

1-یک ستون دیگه اضافه میکنم بنام Date_G از نوع date 

2- کل رکوردهای ستون Date_P را به میلادی تبدیل میکنم و میریزم داخل ستون Date_G

3- ستون Date_P رو تبدیل به Varchar(10) میکنم.

مشکل اینه چطور میتونم با یه کوئری SQL بتونم کل دیتا های ستون Date_P رو تبدیل به میلادی کنم و داخل Date_G ذخیره (update)  کنم؟ بطوری که ID شون یکسان باشه تا تاریخی اشتباه آپدیت نشه؟

با تشکر 

شنبه, 31 فروردین 1398 01:25

بی زحمت یک نگاه به کوئری من بندازید ، برای مثال دو تا ستون دارم بنام های  birthday_p از نوع nvarchar(10) a که همه ی تاریخ های تولد رو به شمسی داخلش داره و birthday از نوع date  که همه تاریخ های تولد رو به میلادی قرار هست داشته باشه که الات در حال حاضر همه تاریخ های شمسی رو داره ... میخوام نظیر به نظیر از ستون birthday_p تاریخ شمسی رو بگیره و تبدیل شده اش رو داخل ستون birthday بریزه... از یک فانکشن تبدیل تاریخ استفاده کردم

UPDATE Tbl_personal 
SET 
    birthday = dbo.[UDF_Julian_To_Gregorian](dbo.[UDF_Persian_To_Julian](birthday_p))
WHERE
    personID IN 
(SELECT 
personID FROM Tbl_Personal)

ارسال پاسخ برای این تاپیک

ارسال پاسخ مخصوص اعضا سایت می باشد ! میتوانید با حساب کاربری خود وارد سایت شده یا ثبت نام کنید