هل تتغير قيمة NOW بين الصفوف داخل الاستعلام نفسه؟

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

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

الإجابة

تحدد MySQL قيمة NOW مرة واحدة عند بداية تنفيذ الاستعلام. لذلك تعيد الاستدعاءات المتعددة للدالة داخل العبارة نفسها قيمة الوقت ذاته، حتى عندما يستغرق التنفيذ مدة أو يعالج عددًا كبيرًا من الصفوف. هذه الخاصية مفيدة عندما تريد أن تشترك نتائج عملية واحدة في مرجع زمني موحد.

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

مثال

SELECT NOW(6) AS first_read,
       NOW(6) AS second_read;

يستخدم المثال دقة تصل إلى ست خانات لأجزاء الثانية، لكن القراءتين تظلان متطابقتين ضمن العبارة. لا تعمل الدالة كساعة تتقدم عند زيارة كل صف جديد.

باختصار: تمثل NOW وقت بداية العبارة، فتثبت داخلها، ولا تضمن القيمة نفسها بين عبارات منفصلة حتى داخل معاملة واحدة.

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

اختبر فهمك

استعلام واحد طويل يستخدم NOW(6) لعرض وقت المعالجة لكل صف. ما السلوك الصحيح؟