【问题标题】:How do I automatically display data by current week and last week?如何自动显示本周和上周的数据?
【发布时间】:2023-03-20 15:05:01
【问题描述】:

我有一个本周的当前总数,从星期一到星期一和上周的总数。我一直在手动更新时间戳以反映当前和上周。我希望它只是从周一到周一以及从周一到周一的上周提取数据

本周代码。

echo "This Week&nbsp;<br />";
$result = mysql_query("SELECT * FROM form_2 WHERE timestamp BETWEEN '2011-11-7' AND '2011-11-14' AND checkcollec = 'yes'");
$num_rows = mysql_num_rows($result);

echo "<b>Checks Collected:</b> $num_rows &nbsp;";

上周代码。

echo "<hr />Last Week&nbsp;<br />";
$result = mysql_query("SELECT * FROM form_2 WHERE timestamp BETWEEN '2011-10-31' AND '2011-11-07' AND checkcollec = 'yes'");
$num_rows = mysql_num_rows($result);

echo "<b>Checks Collected:</b> $num_rows &nbsp;";

我怎样才能做到这一点,这样我就不必每周手动更改它。

【问题讨论】:

    标签: php sql


    【解决方案1】:

    将 SQL 部分更改为

    SELECT * 
    FROM form_2 
    WHERE TIMESTAMP BETWEEN DATE(NOW()) AND DATE_ADD(DATE(NOW()), INTERVAL -7 DAY) 
        AND checkcollec = 'yes';
    

    如果NOW() 不是您需要的日期变量,只需将其替换为您需要的变量,例如同时将其设置在您的 php 脚本中。

    【讨论】:

      【解决方案2】:
      $today = date("Y-m-d");
      $todayMinusSeven = date("Y-m-d",strtotime("-7 days"));
      
      $query = "SELECT * FROM form2 WHERE timestamp BETWEEN '$todayMinusSeven' AND 
          '$today' AND checkcollec = 'yes'";
      
      echo $query;
      

      【讨论】:

        【解决方案3】:

        所有其他解决方案都给出了过去 7 天的结果,因为我知道你想要从星期一到星期一以及前一周的一周。 根据您拥有的 sql server,您可以使用 week() 函数,如

        WHERE week(timestamp) = week(NOW())
        

        语法可能不同,也许您需要为星期设置第二个参数,以便它从星期一开始。

        【讨论】:

        • MySQL 客户端版本:5.1.56 还有我如何显示最后?
        • dev.mysql.com/doc/refman/5.5/en/… 所以你可以使用 week(NOW(),1)。对于上周,您可以只使用上周的时间戳或其他答案中的一种方法,例如 DATE_ADD(DATE(NOW()), INTERVAL -7 DAY)
        • 不,我的解决方案是星期一到星期一,适用于 MySQL。认为他正在使用mysql_query() 函数中的 MySQL。
        【解决方案4】:

        本周:

        SELECT * FROM form_2 WHERE timestamp BETWEEN curdate() - weekday(curdate()) AND curdate() - weekday(curdate()) + 7 AND checkcollec = 'yes'
        

        上周:

        SELECT * FROM form_2 WHERE timestamp BETWEEN curdate() - weekday(curdate()) - 7 AND curdate() - weekday(curdate()) AND checkcollec = 'yes'
        

        【讨论】:

          【解决方案5】:

          我认为问题是关于显示本周的数据。 TS 表示,数据显示从周一到周一和上周从周一到周一。在我的建议中,我们可以使用 WEEKOFYEAR 函数来获取一周内的数据。

          本周:

          SELECT * 
          FROM form_2 
          WHERE WEEKOFYEAR(timestamp)=WEEKOFYEAR(CURDATE()) 
              AND checkcollec = 'yes'
          

          上周:

          SELECT *
          FROM form_2 
          WHERE WEEKOFYEAR(timestamp)=WEEKOFYEAR(CURDATE())-1  
              AND checkcollec = 'yes'
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2020-10-11
            • 1970-01-01
            • 1970-01-01
            • 2019-05-14
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多