"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيفية تحقيق مقارنات دقيقة للتاريخ باستخدام DATE_FORMAT() في MySQL؟

كيفية تحقيق مقارنات دقيقة للتاريخ باستخدام DATE_FORMAT() في MySQL؟

تم النشر بتاريخ 2024-11-03
تصفح:781

How to Achieve Accurate Date Comparisons with DATE_FORMAT() in MySQL?

مقارنة تاريخ MySQL مع DATE_FORMAT()

في هذه المقالة، سوف نستكشف كيفية إجراء مقارنات التاريخ في MySQL باستخدام DATE_FORMAT() وظيفة، معالجة مشكلة معينة يواجهها المستخدم أثناء مقارنة التواريخ.

المشكلة

واجه المستخدم تحديًا عند مقارنة التواريخ باستخدام DATE_FORMAT(). تم تخزين التواريخ بالتنسيق التالي: '%d-%m-%Y'، وهو تنسيق ليس من السهل فرزه. باستخدام الاستعلام أدناه، حاول المستخدم مقارنة التواريخ:

SELECT DATE_FORMAT(DATE(starttime), '%d-%m-%Y')
FROM data
WHERE DATE_FORMAT(DATE(starttime), '%d-%m-%Y') >= '02-11-2012';

ومع ذلك، تضمنت النتيجة '28-10-2012'، والتي كانت غير صحيح وفقًا لتوقعات المستخدم.

الحل

تنشأ المشكلة لأننا نقارن السلاسل بدلاً من التواريخ. يقوم DATE_FORMAT() بتحويل التاريخ إلى سلسلة، وتتم مقارنة السلاسل بشكل معجمي. في هذه الحالة، يكون "28-10-2012" أكبر من "02-11-2012" من الناحية المعجمية، على الرغم من أن "02-11-2012" هو تاريخ لاحق.

لمقارنة التواريخ بدقة، نحتاج لمقارنتها كتواريخ، وليس سلاسل. يمكننا استخدام الدالة DATE() لاستخراج مكون التاريخ من حقل وقت البدء، ثم مقارنة التواريخ باستخدام عامل التشغيل >=، كما هو موضح في الاستعلام التالي:

SELECT DATE_FORMAT(DATE(starttime), '%d-%m-%Y')
FROM data
WHERE DATE(starttime) >= DATE('2012-11-02');
سيقوم هذا الاستعلام بمقارنة التواريخ بشكل صحيح واستبعاد '28-10-2012' من النتيجة.

اعتبارات إضافية

يجدر النظر فيما إذا كان من الممكن تغيير وقت بدء حقل DATETIME إلى حقل DATE. وهذا من شأنه أن يلغي الحاجة إلى التحويل المتكرر، مما قد يؤدي إلى تحسين الأداء.

بيان الافراج أعيد طبع هذه المقالة على: 1729738847 إذا كان هناك أي انتهاك، يرجى الاتصال بـ [email protected] لحذفه
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3