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

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

کاربر سایت

saeedhomayoni

عضویت از 1396/07/20

مشکل تبدیل خودکار تاریخ در sql server

  • دوشنبه 26 آذر 1397
  • 21:35
تشکر میکنم

سلام تاریخ رو به صورت شمسی میفرستم تو دیتابیس ولی خودش تبدیل میکنه به میلادی  لازم به ذکر هست که از نوع datetime2 تعریف کردم حتی به صورت دستی داخل دیتابیس  تاریخ شمسی نوشتم بعد از زدن کلید enter خودش تاریخ رو به صورت میلادی تبدیل کرد ! دوستان راه حلی دارن که تاریخ به همون صورت شمسی ذخیره بشه ؟

پاسخ های این پرسش

تعداد پاسخ ها : 4 پاسخ
کاربر سایت

mortezas

عضویت از 1392/10/17

  • سه شنبه 27 آذر 1397
  • 01:48
خوب شما که میتونید تاریخ رو تبدیل کنید، به میلادی ذخیره کنید و موقع نمایش به شمسی نمایش بدید یا اینکه از نوع داده ی رشته ای استفاده کنید مثل varchar یا nvarchar در کل ذخیره کردن تاریخ به شمسی کار خوبی نیست و احتمال خطا و اشتباهش زیاده حتی اگه از datetime2 استفاده کنید.من یک بار (,البته تو سی شارپ)تاریخ شمسی رو داخل datetime ریختم نزدیک بود کل پروژه به باد بره اگر خواستید میتونم توضیح بدم براتون چرا این مشکل ایجاد میشه
کاربر سایت

saeedhomayoni

عضویت از 1396/07/20

  • سه شنبه 27 آذر 1397
  • 06:38

تبدیل به میلادی که خودش انجام میشه ، تبدیل به شمسی رو هم که خودم انجام میدم تو برنامه فعلا ، اما اگه توضیح بدید چه اتفاقی می افته ممنون میشم
تشکر

کاربر سایت

رضا نصیری

عضویت از 1392/10/01

  • شنبه 27 بهمن 1397
  • 14:48

دوست عزیز sql خودش تبدیلی روی تاریخ انجام نمیده.

برای ذخیره تاریخ شمسی از DataType  nvarchar(10) استفاده کنید.

کاربر سایت

saeedhomayoni

عضویت از 1396/07/20

  • شنبه 27 بهمن 1397
  • 20:16

سلام

اینکه تاریخ رو به صورت nvarchar ذخیره کنیم اشتباه خست هرچیزی قانونی داره که باید رعایت بشه اگه نیازی به datetime2 نبود اصلا به وجود نمیومد !

اما راه حل و نحوه ایجاد مشکل چی بود ؟

جواب :

من از ado.net برای درج اطلاعات استفاده میکردم و خود سی شارپ تاریخ رو به میلادی تبدیل و در sql ذخیره میکرد و اره حل این بود که من باید بجای استفاده از

    command.Parameters.AddWithValue("@HistoryDateRegister",HiEntity.HistoryDateRegister);

از

   command.Parameters.Add("@HistoryDateRegister", SqlDbType.DateTime2).Value = HiEntity.HistoryDateRegister;

استفاده میکردم و این مشکل به این روش حل شد

کاربرانی که از این پست تشکر کرده اند

هیچ کاربری تا کنون از این پست تشکر نکرده است

اگر نیاز به یک مشاور در زمینه طراحی سایت ، برنامه نویسی و بازاریابی الکترونیکی دارید

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)