سؤال

لدي مشكلة في أن بناء الجملة لـ Datediff في MySQL يختلف عن تلك الموجودة في HSQLDB:

mysql: datediff(date1,date2)
hsqldb: datediff(interval,date1,date2)

عادةً ما تحل اللهجات في السبات هذه المشكلات ، ولكن لا يبدو أنني قادر على إيجاد طريقة لإنشاء قيود مواعدة على السبات. هذا مصدر إزعاج حقيقي لأنه يمنعني من اختبار الوحدة باستخدام قاعدة بيانات HSQL في الذاكرة حيث يجب علي "ترميز" تنسيق Datediff في عبارة SQL.

إذا كان لدى أي شخص نصيحة في هذا الشأن ، فسيكون موضع تقدير كبير.

هل كانت مفيدة؟

المحلول

أود أن أقول إن الحل الأسهل هو إنشاء لهجة HSQLDB المخصصة الخاصة بك ، وتوسيع لهجة HSQLDB الحالية. بعد ذلك ، في المُنشئ ، قم بتسجيل وظيفة للتعامل مع Datediff (Date1 ، Date2) المراد ترجمتها إلى Datediff (الفاصل الزمني ، Date1 ، Date2) ، شريطة أن تكون الفاصل الزمني قيمة ثابتة. شيء من هذا القبيل:

registerFunction( "datediff", new SQLFunctionTemplate( StandardBasicTypes.INTEGER, "datediff(interval, ?1, ?2)" ) );
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top