لهجات السبات + وظيفة Datediff
سؤال
لدي مشكلة في أن بناء الجملة لـ 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)" ) );
لا تنتمي إلى StackOverflow