البرمجة

كيفية حل مشكلة تحويل التاريخ في SQL Server

يبدو أنك تواجه مشكلة في تحويل تاريخ من سلسلة نصية إلى تاريخ في SQL Server. الخطأ “Conversion failed when converting date and/or time from character string” يحدث عندما تحاول استخدام دالة تحويل تاريخ مثل CONVERT أو CAST والقيمة التي تم تمريرها لهذه الدالة ليست في تنسيق تاريخ صحيح.

في الاستعلام الخاص بك، يبدو أن السبب في الخطأ هو أن قيمة app.[ap_date] ليست في التنسيق الذي يمكن تحويله إلى تاريخ باستخدام تنسيق التاريخ الذي تم تحديده 105، الذي يفترض أن يكون التنسيق “dd-mm-yyyy”.

لحل هذه المشكلة، يجب التأكد من أن قيمة app.[ap_date] تحتوي على تاريخ صحيح في التنسيق الذي تستخدمه (dd-mm-yyyy في هذه الحالة). يمكنك استخدام دالة TRY_CONVERT بدلاً من CONVERT للتحقق من صحة التحويل دون رمي الخطأ. على سبيل المثال:

sql
SELECT app.[Pap_id], reg.[p_id],[p_name],[p_age],[p_gender],[p_mob],[p_specificId],app.[ap_date],app.[reqst_txt] FROM [dbo].[tblpatientReg] reg INNER JOIN [dbo].[tblAppoinment] app ON app.[P_id]=reg.[p_id] WHERE app.[p_status] = 1 ORDER BY TRY_CONVERT(date, app.[ap_date], 105) ASC;

هذا الاستعلام سيقوم بترتيب النتائج حسب التاريخ app.[ap_date] بشكل صحيح دون رمي الخطأ إذا كان التاريخ غير صالح للتحويل.

المزيد من المعلومات

يبدو أنك تستخدم SQL Server لاستعلام قاعدة البيانات الخاصة بك. في الاستعلام الذي وضعته، تقوم بالانضمام بين جدولين tblpatientReg و tblAppoinment باستخدام الحقل P_id كمفتاح أساسي للارتباط بينهما. كما تقوم بتحديد الحقول التي تريد استرجاعها من الجدولين.

الخطأ الذي تواجهه يحدث عندما تحاول تحويل سلسلة نصية إلى تاريخ، والسبب في ذلك قد يكون بسبب تنسيق غير صحيح للتاريخ في الحقل app.[ap_date]. تحديدًا، يستخدم تنسيق التحويل 105 الذي يفترض أن يكون التاريخ بتنسيق “dd-mm-yyyy”.

لمعالجة هذا الخطأ، يمكنك التحقق من تنسيق التاريخ في الحقل app.[ap_date] والتأكد من أنه يتوافق مع التنسيق المتوقع. يمكنك أيضًا استخدام دالة TRY_CONVERT بدلاً من CONVERT للتحقق من صحة التحويل دون رمي الخطأ.

زر الذهاب إلى الأعلى