【问题标题】:Getting an event from a database a week in advancee提前一周从数据库中获取事件
【发布时间】:2010-10-09 13:53:09
【问题描述】:

我目前正在开发一个体育网站,其中一个页面是即将到来的赛程,用户可以在其中了解哪支球队以及球队在哪里进行下一场比赛。

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

  • 身份证
  • 团队编号
  • 反对
  • 场地
  • 日期
  • 见面时间
  • 比赛类型

所以从 DB 和 print_r'd 中提取的一行数据可能如下所示

ID=>[1] 球队编号=>[1] 对手=>[YORKSHIRE] 地点=>[主场] 日期=>[2009/4/25] 比赛时间=>[13.00] 比赛类型=>[杯]

我的问题是我不知道如何根据当前日期显示下一场比赛,所以例如现在我希望网站显示将在 2009 年 4 月 25 日这一周发生的所有比赛和然后一旦下周末的比赛结束了。

希望这是有道理的,有人告诉我如何解决这个问题。

【问题讨论】:

    标签: php mysql database datetime


    【解决方案1】:
    select * from my_events where date between now() and date_add(now(), interval 7 day);
    

    我认为应该这样做。

    【讨论】:

      【解决方案2】:

      除了完全依赖 MySQL,还可以使用 PHP 的 strtotime() 函数:

      $query = "select * from my_events where date between now() and ".
      date("Y-m-d", strtotime("+1 week"));
      

      【讨论】:

        【解决方案3】:

        对于 MySQL,请查看 Date and Time 函数。您可以结合使用CURDATE() 和ADDDATE() 来实现您所需要的。

        【讨论】:

          【解决方案4】:

          你的描述很模糊,但试试这样:

          SELECT all_fields_you_need
          FROM table_name
          WHERE `DATE` > CURDATE() AND `DATE` <= DATE_ADD(CURDATE(), INTERVAL 7 DAY)
          ORDER BY `DATE` ASC
          

          (未测试,只是在我脑海中写下...)

          将其全部加载到数组中并显示数据

          【讨论】:

            【解决方案5】:

            您可以获取系统日期(在 Oracle 中使用sysdate),然后添加到它,因此查找所有DATE = sysdate + 7 所在的记录。您可能需要稍微尝试一下,格式化日期以便 sysdate + 7 返回一个没有时间的日期,但这基本上是您所需要的。

            编辑:

            如果您想要从现在到一周后的活动(如果比赛只在周末进行,那么这将返回下周末的比赛)

            DATE > sysdate AND DATE <= sysdate + 7
            

            【讨论】:

              【解决方案6】:

              为 xxx 队争取下一场比赛

              SELECT * 
              FROM   myTable
              WHERE  TEAM NUMBER = xxx
              AND    DATE = ( SELECT MIN(DATE) 
                              FROM   myTable
                              WHERE  TEAM NUMBER = xxx
                              AND    DATE        > NOW() ) 
              

              我怀疑这是你真正想要的,如果比赛只在周末进行(这似乎是你问题的一个假设)。
              今天 + 7 天与下周末不同,除非今天恰好与比赛在一周中的同一天。

              【讨论】:

              • 考虑到您没有将查询限制在周末,这也不会这样做。
              • 好电话。我知道,但我认为有一种假设是比赛只在周末举行。
              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2020-04-21
              • 2020-10-29
              相关资源
              最近更新 更多