قد تختلف إضافة شهر مرتين عن إضافة شهرين مرة واحدة عند استخدام DATE_ADD. السبب هو أن كل استدعاء مستقل يطبق قواعد صلاحية اليوم داخل الشهر المستهدف. إذا اضطرت الإضافة الأولى إلى تقليل رقم اليوم للوصول إلى نهاية شهر أقصر، فإن الإضافة التالية تبدأ من التاريخ المعدل، وليس من التاريخ الأصلي.
تظهر هذه الحالة عند حساب سلسلة مواعيد شهرية انطلاقًا من نهاية يناير. قد ينخفض اليوم إلى نهاية فبراير، ثم يبقى هذا الرقم في مارس رغم وجود يوم حاد وثلاثين فيه. أما إضافة شهرين إلى يناير مباشرة فتصل إلى مارس مع بقاء اليوم الأصلي صالحًا. لهذا يجب تحديد قاعدة العمل المطلوبة قبل اختيار طريقة الحساب.
مثال
SELECT DATE_ADD(DATE_ADD('2023-01-31', INTERVAL 1 MONTH), INTERVAL 1 MONTH) AS repeated,
DATE_ADD('2023-01-31', INTERVAL 2 MONTH) AS direct;
لا تحفظ الدالة معلومة إضافية تقول إن التاريخ الأصلي كان نهاية الشهر، بل تعمل على القيمة التي تصل إليها في كل خطوة.
باختصار: قد تؤدي الخطوات الشهرية المتتابعة إلى يوم مختلف عن الإضافة المباشرة، بسبب تعديل اليوم في النتائج الوسيطة.
هل تريد تعلّم SQL خطوة بخطوة مع تمارين عملية؟ تابع مسار SQL من الأساسيات للاحتراف.