周六会有比赛,但不是每个周末都有。我想在新的一周展示,如果下周六有一场即将到来的比赛。
我在想这样的事情,提前 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
尽管效率低下,因为即使没有必要,您也会始终运行查询 - 最好让应用程序仅在星期一执行它。
在这种情况下,你最好使用 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
}