سؤال

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

$date = date("o-m-d");
$query = "SELECT date_created,COUNT(to),from,to FROM likes WHERE date_created LIKE '$date%' GROUP BY to ORDER BY COUNT(to) DESC LIMIT 10";

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

هيكل الإعجابات: من / إلى / تاريخ الإنشاء / الهوية

التواريخ في معيار إسو الوقت-مثال 2010-07-14 طن 00:35:31-04:00.تأتي مباشرة من إشارة فب:التاريخ ("ج");

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

المحلول

giveacodicetagpre.

نصائح أخرى

إذا كان حقل date_created الخاص بك هو نوع حقل DateTime أو TimeTampame، فيمكنك استخدام Date_Sub في جملة أينما على النحو التالي؛

giveacodicetagpre.

لذا يجب تعريف التاريخ الذي تم إنشاؤه أولا على أنه طابع زمني مع تشغيل default current timestamp.إذا كان لديك تاريخ تم تعديله في الجدول أيضا ، فسيكون لديك تاريخ تم تعديله on update current timestamp ويمكنك تعريف مع التاريخ الذي تم إنشاؤه باعتباره الطابع الزمني وهذا الزناد لتحديثه

CREATE TRIGGER likes_date_entered
BEFORE INSERT ON likes
FOR EACH ROW SET NEW.date_created = NOW()

الآن أن لدينا الطابع الزمني يمكنك بسهولة تطبيق بعض وظائف تاريخ الخلية إلى العمود.

http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html

سأترك ما يجب القيام به كممارسة للقارئ ، إلا إذا كنت أقول جميلة من فضلك وتريد مني أن أعطي بناء الجملة بالضبط.

يجب أن تستخدم وظائف التاريخ / الوقت، بدلا من ذلك.

giveacodicetagpre.

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