星期六会有比赛,但不是每个周末都有比赛。如果星期六之后有即将推出的游戏,我想在新的一周展示。
如果我们在星期一,如果有一个星期六有一个游戏应该找到它的话,我正在考虑这样的事情提前6天检查。但当然它缺少部分,只是一个开始,但我卡住了。至于现在它找到了下一个1个月之后的游戏,它应该只显示那周是否有一个。
"Select * From games Where date > DATE_ADD(CURDATE(),INTERVAL 6 DAY)"
答案 0 :(得分:0)
您可以使用PHP的DateTime
课程来查找下周六的日期:
$nextSaturday = new DateTime('next Saturday');
从那里,只需选择日期等于$nextSaturday->format('Y-m-d')
的位置即可找到下周六的游戏(如果有的话)。
答案 1 :(得分:0)
您要求数据库提取的是“未来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
}