سؤال

الاعتذار إذا تم بالفعل الرد على ذلك عدة مرات، لكنني لم أتمكن من العثور على الجواب وكنت مخبأ.

لدي استعلام MySQL الذي يخرج على ما يبدو النتيجة التي أريدها عند تشغيلها في قاعدة البيانات - ولكن عندما أقوم بتشغيل الاستعلام من خلال PHP، فإنه لا يخرج بشكل صحيح.

في قاعدة البيانات، يتم تخزين التواريخ مثل هذا:

2009-08-13T00:00:00

ما أريد القيام به لا يعرض البيانات الأقدم من تاريخ اليوم. لذلك، في جملة أين تفعل هذا:

        WHERE dateField1 >= DATE_FORMAT(now(),'%Y-%m-%d') AND dateField2 >= DATE_FORMAT(now(),'%Y-%m-%d')

نيتي هي تجريد الجزء الزمني، حيث كنت تكافح لإيجاد طريقة لتحويل الجزء الزمني من الآن () إلى منتصف الليل.

يبدو أن هذا يعمل عند تشغيله على PhpMyAdmin، ولكن عندما أقوم بتشغيل البرنامج النصي PHP، لا يفعل ذلك.

أيه أفكار؟

شكرا جزيلا!

هل كانت مفيدة؟

المحلول

يبدو أن هذا يعمل عند تشغيله على PhpMyAdmin، ولكن عندما أقوم بتشغيل البرنامج النصي PHP، لا يفعل ذلك.

أنت لا تستخدم شيء مثل sprintf لبناء السلسلة أنت؟ إذا كان الأمر كذلك، فأنت بحاجة إلى الهروب من % مع آخر %

في أي حال، يمكنك استخدام الوظيفة DATE()

WHERE `dateField1` > DATE(NOW())

نصائح أخرى

نيكف هو الصحيح. وأنا أتفق مع ذلك.

في حالة استخدام وظيفة Sprintf () لإجراء مكالمة SQL، يمكنك تشغيل استفسارك في هذا:

  $query = sprintf("SELECT * FROM SOME_TABLE WHERE id=%s AND dateField1 >= DATE_FORMAT(now(),'%%Y-%%m-%%d') AND dateField2 >= DATE_FORMAT(now(),'%%Y-%%m-%%d')", $id);
//Then submit $query for SQL query processing...

PHP انظر٪ كنوع محدد عند استخدام sprinthf ().

للهروب من ذلك، تحتاج إلى إضافة واحدة أخرى أمام سلسلة تنسيق MySQL، أي ٪٪ Y أو ٪٪ M أو ٪٪ D. سيصبح الإخراج الفعلي إلى استعلام MySQL٪ y أو٪ م أو٪ د مرة أخرى.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top