更新
我正在建立一个网站的后端。该网站的意思是向访客提供我们正在组织的活动的时间和活动 所以我在数据库中填写了各种活动。每个活动都有日期,名称和其他一些信息。
很明显,过去展示活动并没有帮助访客,因此我只希望他们展示即将开展的活动。为了节省自己的大量工作,做PHP / MySQL的所有工作并向访问者展示下两个事件将是很好的。
你能告诉我MySQL功能吗?
提前致谢,
答案 0 :(得分:3)
SELECT * FROM `activities` ORDER BY ABS(DATEDIFF(NOW(), `date`)) LIMIT 2
从更新后的问题中,只考虑未来的活动......所以......
SELECT * FROM `activities` WHERE `date` > NOW() ORDER BY `date` LIMIT 2
答案 1 :(得分:3)
只是一些建议:
选择当前时刻前最近的2个事件和当前时刻后最接近的2个事件。
(SELECT *
FROM ...
WHERE `time` < NOW()
ORDER BY `time` DESC
LIMIT 2)
UNION
(SELECT *
FROM ...
WHERE `time` > NOW()
ORDER BY `time` ASC
LIMIT 2)
此时,PHP中最多只能有4个事件。但是你只需要2.最接近的2.要找出哪个是最接近你使用strtotime
并查看事件的时间戳和你可以通过调用{{1}获得的当前时间戳之间的差异}。之后,您只保留最近的2个事件。
请注意,这可以直接从MySQL实现,但这样更难。
@Latest update。如果您不想了解更多内容,请阅读此内容就足够了。
只需使用此查询:
time()
答案 2 :(得分:0)
$query = 'SELECT .... FROM ... WHERE `date` > '.$today.' ORDER BY `date` DESC LIMIT 2';
$today
取决于您的date
列类型。