PDA

View Full Version : سوال: خطای conversion failed when converting date and/or time from character string



Bloody Diamond
پنج شنبه 08 خرداد 1393, 07:21 صبح
با عرض سلام و خسته نباشید.
بنده به مشکلی در طراحی برنامه ام در #C برخورده ام که واقعاً منو کلافه کرده. مشکل اینه که من توی یه فرم مقدار تاریخ رو با یک masktextbox دریافت می کنم و اون رو با تابعی که تاریخ رو از نوع String دریافت می کنه داخل جدول درج
می کنم. لازم به ذکر است که نوع فیلد تاریخ در جدول بانک اطلاعاتی از نوع date هستش و وقتی میخوام تاریخ 1393/02/29 و 1393/02/30 را ثبت کنم با خطای :
conversion failed when converting date and/or time from character string
مواجه می شم. نکته قابل توجه اینه که این خطا فقط برای تاریخ های فوق رخ میده و بقیه تاریخ ها براحتی ثبت می شند. خواهشاً بنده را راهنمایی کنید و بگید مشکل کجاست که دارم دیوونه میشم.

با تشکر

Bloody Diamond
پنج شنبه 08 خرداد 1393, 09:20 صبح
با عرض سلام و خسته نباشید.
بنده به مشکلی در طراحی برنامه ام در #C برخورده ام که واقعاً منو کلافه کرده. مشکل اینه که من توی یه فرم مقدار تاریخ رو با یک masktextbox دریافت می کنم و اون رو با تابعی که تاریخ رو از نوع String دریافت می کنه داخل جدول درج
می کنم. لازم به ذکر است که نوع فیلد تاریخ در جدول بانک اطلاعاتی از نوع date هستش و وقتی میخوام تاریخ 1393/02/29 و 1393/02/30 را ثبت کنم با خطای :
conversion failed when converting date and/or time from character string
مواجه می شم. نکته قابل توجه اینه که این خطا فقط برای تاریخ های فوق رخ میده و بقیه تاریخ ها براحتی ثبت می شند. خواهشاً بنده را راهنمایی کنید و بگید مشکل کجاست که دارم دیوونه میشم.

با تشکر

کسی نیست کمک کنه

rezayeman
پنج شنبه 08 خرداد 1393, 09:25 صبح
بهتره مقدار تاریخ اول به میلادی تبدیل بشه و بعد توی بانک ثبت بشه. شما مقدار string میریزی توی بانک شاید این تاریخ به میلادی وجود نداشته باشه واسه همین error میده.

مقدار شمسی تو بانک ذخیره کردن درست نیست بعدا هنگام جستجو به مشکل میخوری

forodo
پنج شنبه 08 خرداد 1393, 09:45 صبح
سلام
نوع فیلدی که داخل بانک تاریخ رو توش می ریزی NVARCHAR کن.
اینطوری هر تاریخی می خوای بریز. فقط تعداد کاراکترهای تاریخ باید 10 تا باشه یعنی اینطوری: 1393/03/08
در آینده اگر بخوای بین تاریخ ها سرچ بکنی مشکلی پیش نمیاد چون خودش اون فیلد رو به صورت تاریخ می بینه.
من تا الان همیشه شمسی داخل بانک ذخیره کردم و مشکلی برام پیش نیومده.

rezayeman
پنج شنبه 08 خرداد 1393, 15:45 عصر
در آینده اگر بخوای بین تاریخ ها سرچ بکنی مشکلی پیش نمیاد چون خودش اون فیلد رو به صورت تاریخ می بینه.
من تا الان همیشه شمسی داخل بانک ذخیره کردم و مشکلی برام پیش نیومده.

اگه قرار باشه که کار تاریخ با مقدار رشته ای حل بشه که دیگه نوع datetime تعریف نمی کردن.
به نظر شما دو مقدار 93/02/01 با 93/02/01 چه تفاوتی با هم دارن؟ اگه این دو مقدار رشته ای باشن هیچ فرقی با هم ندارن و با هم مساوی هستن و اگه از نوع datetime باشن فرقشون در مقدار ساعتی هستش که توی این فیلد ذخیره میشه. در این مواقع هم میشه مقدار تاریخ را با رشته ذخیره کرد؟

forodo
پنج شنبه 08 خرداد 1393, 21:03 عصر
اگه قرار باشه که کار تاریخ با مقدار رشته ای حل بشه که دیگه نوع datetime تعریف نمی کردن.
به نظر شما دو مقدار 93/02/01 با 93/02/01 چه تفاوتی با هم دارن؟ اگه این دو مقدار رشته ای باشن هیچ فرقی با هم ندارن و با هم مساوی هستن و اگه از نوع datetime باشن فرقشون در مقدار ساعتی هستش که توی این فیلد ذخیره میشه. در این مواقع هم میشه مقدار تاریخ را با رشته ذخیره کرد؟

من درست متوجه منظور شما نشدم.
ولی من برای کارام همیشه تاریخ رو به صورت رشته ذخیره می کنم با این فرمت 0000/00/00 و در فیلد دیگری هم ساعت رو به صورت رشته ذخیره می کنم با این فرمت 00:00:00. و موقع سرچ هم تا به حال هیچ مشکلی نداشتم.
به جای اینکه بیام شمسی رو به قمری تبدیل کنم و توی بانک ذخیره کنم و بعد موقع فراخوانی بیام دوباره قمری رو به شمسی تبدیل کنم یه تیکه شمسی رو داخل بانک ذخیره می کنم.

Reza Hadipour
دوشنبه 19 مهر 1395, 00:23 صبح
سلام
من هم با این خطا مواجه شدم، زمانی که میخوام یک کوری ایجاد کنم این خطا میاد. اولین بار از این کد استفاده کردم و مشکل رفع شد datetime.ToString("d")
اما چند ماه بعد دوباره این خطارو دارم میبینم! هیچ چیزیم تغییر نکرذه نمیدونم چرا.
فرمتی که داخل دیتابیس ذخیره شده به این شکله 2016-10-13
من هم هنگام تبدیل تاریخ به رشته این فرمت رو براش نوشتم tempDate.ToString("dd-MM-yyyy") اما باز نتیجه ای نداشت.
داخل دیتابیس از نوع DATE تعیر شده و داخل برنامه متعیر های زمان از نوع Datetime هستن.
اگر کسی میدونه دلیل این خطاها چیه و چطور میشه برای همیشه رفعش کرد کمک کنه. مرسی

اکد زیر رشته ایه که قصد دارم درست کنم

str = "select * FROM View_Customer_Transaction WHERE Factor_Date = '" + datetime.ToString("d") + "' and transaction_Title like N'خرید'";