我目前正在开发一个体育网站,其中一个页面即将到来,用户可以使用哪个团队以及团队正在进行下一场比赛。
我有一个包含以下字段的数据库......
因此,从DB和print_r'd中提取的一行数据可能如下所示
ID => [1] TEAM NUMBER => [1] OPPOSITION => [YORKSHIRE] VENUE => [HOME] DATE => [2009/4/25] MEET TIME => [13.00 ] MATCH TYPE => [CUP]
我的问题是我无法确定如何根据当前日期显示下一场比赛,所以例如现在我希望该网站显示将在2009年4月25日周末发生的所有比赛和然后,一旦它已经在下周末举行了比赛。
希望这是有道理的,有些人会让我知道如何解决这个问题。
答案 0 :(得分:2)
select * from my_events where date between now() and date_add(now(), interval 7 day);
我认为应该这样做。
答案 1 :(得分:0)
您可以获取系统日期(在Oracle中使用sysdate
),然后添加到该系统日期,以查找DATE = sysdate + 7
所有记录。您可能需要稍微玩一下,格式化日期,以便sysdate + 7
返回没有时间的日期,但这基本上就是您所需要的。
编辑:
如果你想从现在到现在一周之间的事件(如果游戏只在周末,那么这将在下周末的比赛中返回)做
DATE > sysdate AND DATE <= sysdate + 7
答案 2 :(得分:0)
SELECT *
FROM myTable
WHERE TEAM NUMBER = xxx
AND DATE = ( SELECT MIN(DATE)
FROM myTable
WHERE TEAM NUMBER = xxx
AND DATE > NOW() )
我怀疑这是你真正想要的,如果只在周末进行比赛(这似乎是你问题的假设)。
今天+ 7天与下周末不一样,除非今天恰好是一周的同一天。
答案 3 :(得分:0)
对于MySQL,请查看Date and Time函数。您可以使用CURDATE()和ADDDATE()的组合来实现您的需求。
答案 4 :(得分:0)
你的描述非常有效,但尝试这样的事情:
SELECT all_fields_you_need
FROM table_name
WHERE `DATE` > CURDATE() AND `DATE` <= DATE_ADD(CURDATE(), INTERVAL 7 DAY)
ORDER BY `DATE` ASC
(未经测试,只是因为它出现在我脑海中......)
将其全部加载到数组中并显示数据
答案 5 :(得分:0)
您可以使用PHP的strtotime()函数,而不是完全依赖MySQL;
$query = "select * from my_events where date between now() and ".
date("Y-m-d", strtotime("+1 week"));