تخزينها وظيفة في الخلية لا يحب المستخدم زودت التواريخ؟

StackOverflow https://stackoverflow.com/questions/1235895

سؤال

ولدي وظيفة المخزنة في الخلية:

CREATE FUNCTION `login_count`(o INT, start_date DATE, end_date DATE) RETURNS INT
READS SQL DATA
BEGIN
DECLARE total_count INT;
SELECT COUNT(*) INTO total_count FROM logins as l WHERE `order_id` = o && modified BETWEEN start_date AND end_date; 
RETURN total_count; 
END

وجميلة الأساسية، ويأخذ الهوية، وتاريخ بدء وتاريخ انتهاء وإرجاع عدد من تسجيلات لهذا النطاق الزمني. كلما كنت تشغيله أحصل على 0 إلى الوراء. إلا إذا أزلت قسم التاريخ شرط مكان. ثم تقوم بإرجاع عدد الفعلي. أو إذا أنا فقط يدويا وضع التواريخ في وظيفة المخزنة يعمل ... حتى انها ليست قضية من التمور، ولكن فقط عندما أكون توريد التمور خلال قائمة المعلمة أنها لا ترغب في ذلك.

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

وأيضا، هل هناك طريقة لتصحيح المخزنة وظائف / إجراءات. أنا مجرد الحصول على 0 إلى الوراء، ولكن هناك وسيلة بالنسبة لي لتصحيح هذا في محاولة لمعرفة ما يمكن أن يحدث؟

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

المحلول

وقائي الاول تخمين هو أنك مواعيد توريد بتنسيق التي لا تعترف الخلية. الخلية هي من الصعب إرضاءه جدا حول تنسيق الحرفية التاريخ. انها تريد YYYY-MM-DD، YY-MM-DD، YYYYMMDD، أو YYMMDD (يمكنك أيضا استخدام أي حرف الترقيم آخرين في مكان شرطات). انظر وأنواع DATETIME والتاريخ والطابع الزمني للحصول على مزيد من التفاصيل .

ويمكنك أيضا تحويل المزيد من تنسيقات التاريخ إلى الصيغة المقبولة الخلية مع في STR_TO_DATE () وظيفة.

وفيما يتعلق بإجراءات التصحيح المخزنة وظائف المخزنة، يمكنك دائما تعيين متغير المعرفة من قبل المستخدم مع البادئة @، ويصبح هذا المتغير متاحة على الصعيد العالمي بعد ترجع الدالة المخزنة. مثل الآثار الجانبية. لذلك يمكنك استخدام هذا لوضع المعلومات التشخيصية أثناء تشغيل وظيفة المخزنة، ومن ثم التحقق من ذلك بعد ذلك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top