周六会有比赛,但不是每个周末。如果下周六有即将到来的比赛,我想在新的一周展示。
如果我们在前星期一,我正在考虑这样的事情来提前 6 天检查,如果星期六有比赛,它应该找到它。但当然它缺少部分,只是一个开始,但我卡住了。至于现在它会找到 1 个月后的下一场比赛,它应该只显示那周是否有比赛。
"Select * From games Where date > DATE_ADD(CURDATE(),INTERVAL 6 DAY)"
您可以使用 PHP 的DateTime
类来查找下周六的日期:
$nextSaturday = new DateTime('next Saturday');
从那里,只需选择日期所在的位置,$nextSaturday->format('Y-m-d')
即可找到下周六的比赛(如果有)。
您要让数据库获取的是“未来 6 天内的所有游戏”真的
SELECT * FROM `games` WHERE `date` >= CURDATE()
AND `date` <= DATE_ADD(CURDATE, INTERVAL 6 DAY)
...或者您可以使用BETWEEN
...
SELECT * FROM `games` WHERE `date`
BETWEEN CURDATE()
AND DATE_ADD(CURDATE(), INTERVAL 6 DAY)
[编辑]
刚刚弄清了问题标题中“在星期一显示”的含义……您实际上只想在星期一执行查询:)
因此,您要么只想在星期一运行查询(在应用程序级别完成),要么在其中运行查询,AND DAYOFWEEK(CURDATE()) = 2
这样它就像
SELECT * FROM `games` WHERE `date` >= CURDATE()
AND `date` <= DATE_ADD(CURDATE, INTERVAL 6 DAY)
AND DAYOFWEEK(CURDATE()) = 2
尽管这样的效率相当低,因为即使不需要,您也会始终运行查询 - 最好让应用程序只在 Mondays 执行它。
在这种情况下,您最好使用 drrcknlsn 的解决方案,使用 PHP 的DateTime
对象并执行类似的操作(或将整个事情整合到 Cron 作业中):
if(date("N") == 1) {
$oNextSaturday = new DateTime('next Saturday');
$sFetchUpcomingGames = "SELECT * FROM `games` WHERE `date` = '{$oNextSaturday->format('Y-m-d')}'";
//execute the database query and perform relevant outputs, and so on
}