MySQL - استرداد النتائج حسب القرب من التاريخ
سؤال
سؤالي هو:
على افتراض أن لدينا Calendar_table مع Unix Datestamp Date_Column ، أريد استرداد الحدث بأقرب من تاريخ اليوم.
لذلك ، على سبيل المثال إذا لم يكن هناك حدث اليوم ، احتفظ بأقربها بناءً على تاريخه!
محدث
ربما أحتاج إلى أن أكون أكثر وضوحًا ، فأنا بحاجة إلى استرداد ليس فقط حدثًا واحدًا ، ولكن جميع الأحداث في الطاولة مع نفس التاريخ ، الأقرب إلى تاريخ اليوم!
شكرا كلكم يا رفاق! ؛-)
المحلول
SELECT * FROM `calendar_table` WHERE `date_column` = (SELECT `date_column` FROM `calendar_table` ORDER BY ABS(`date_column` - UNIX_TIMESTAMP()) ASC LIMIT 1)
نصائح أخرى
SELECT *
FROM `calendar_table`
ORDER BY ABS(`date_column` - UNIX_TIMESTAMP()) DESC
LIMIT 1
ما يمكنك فعله هو تحديد الفرق بين تاريخ اليوم وتاريخ الحدث ، وحدد أصغر نتيجة.
أولا حدد الفرق مثل هذا:
SELECT DATEDIFF(EventDate, Now()) As Datediff FROM calendar
أو إذا كنت ترغب في العثور على أحداث في الماضي أيضًا:
SELECT Abs(DATEDIFF(EventDate, Now())) As Datediff FROM calendar
ثم فقط اطلب من هذا الحقل وأخذ أول واحد من القائمة.
لا تنتمي إلى StackOverflow