تعيد الدالة NOW() التاريخ والوقت الحاليين، بينما تعيد CURDATE() التاريخ الحالي فقط. تختار بينهما بحسب المعلومات التي تحتاج إليها. تسجيل لحظة إنشاء طلب يتطلب عادة التاريخ والوقت، أما عرض تاريخ اليوم في تقرير يومي فقد يحتاج إلى التاريخ وحده. كلاهما يعتمد على المنطقة الزمنية المستخدمة في جلسة الاتصال.
لا تحذف CURDATE وقتًا من بيانات الجدول، بل تنشئ قيمة تمثل اليوم الحالي. كذلك لا تعني NOW وقت جهاز المستخدم الذي يشاهد الموقع بالضرورة؛ فالاستعلام ينفذ ضمن سياق اتصال قاعدة البيانات. يجب مراعاة ذلك عندما يكون التطبيق والخادم أو المستخدمون في مناطق زمنية مختلفة.
مثال
SELECT NOW() AS current_moment,
CURDATE() AS current_day;
يعرض العمود الأول مكونات التاريخ والوقت، ويعرض الثاني التاريخ وحده. تتغير القيم الفعلية بحسب لحظة التنفيذ وإعداد الجلسة، ولذلك لا توجد قيمة ثابتة صالحة لكل تشغيل لهذا المثال.
باختصار: استخدم NOW عندما تحتاج إلى اللحظة الحالية، واستخدم CURDATE عندما يكفيك تاريخ اليوم.
هل تريد تعلّم SQL خطوة بخطوة مع تمارين عملية؟ تابع مسار SQL من الأساسيات للاحتراف.