ماذا يحدث عند إضافة شهر إلى تاريخ في نهاية الشهر؟

متقدمقراءة دقيقةآخر تحديث 3 أكتوبر 2026

SQL قواعد البيانات

الإجابة

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

يؤثر ذلك في حساب مواعيد التجديد والاستحقاق التي تبدأ قرب نهاية الشهر. مثلًا، يوجد اليوم الحادي والثلاثون في يناير، لكنه لا يوجد في فبراير. تعتمد النتيجة النهائية أيضًا على السنة، لأن فبراير قد ينتهي في اليوم الثامن والعشرين أو التاسع والعشرين. الدالة تستخدم قواعد التقويم لمعالجة هذا الاختلاف.

مثال

SELECT DATE_ADD('2024-01-31', INTERVAL 1 MONTH) AS renewal_date;

يعيد المثال آخر يوم من فبراير في السنة الكبيسة، وهو 2024-02-29. لا ينتج تاريخ غير صالح، ولا تضاف مدة ثابتة من الساعات بدل الشهر.

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

هل تريد تعلّم SQL خطوة بخطوة مع تمارين عملية؟ تابع مسار SQL من الأساسيات للاحتراف.

اختبر فهمك

ما تاريخ renewal_date الناتج عن الاستعلام التالي؟

CREATE TABLE orders (starts_on DATE);
INSERT INTO orders VALUES ('2024-01-31');
SELECT DATE_ADD(starts_on, INTERVAL 1 MONTH) AS renewal_date
FROM orders;