提前一周从数据库中获取事件

时间:2009-02-24 14:35:40

标签: php mysql database datetime

我目前正在开发一个体育网站,其中一个页面即将到来,用户可以使用哪个团队以及团队正在进行下一场比赛。

我有一个包含以下字段的数据库......

  • ID
  • 团队号码
  • 异议
  • VENUE
  • DATE
  • MEET TIME
  • 匹配类型

因此,从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日周末发生的所有比赛和然后,一旦它已经在下周末举行了比赛。

希望这是有道理的,有些人会让我知道如何解决这个问题。

6 个答案:

答案 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)

为团队xxx

获得下一场比赛
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"));