【问题标题】:PHP MySQL Query to get results Thursday to Wednesday Last WeekPHP MySQL Query 上周周四至周三获取结果
【发布时间】:2015-01-18 20:27:40
【问题描述】:

我正在尝试查询上周从周四到周三的结果。

今天是 18 号,即星期日,PHP 术语中一周的第一天。我的代码不起作用,因为它在周日重新启动。我的 IF 语句不起作用,我的周修饰符(-1 周)不起作用。每周应该从星期四到星期四,星期三午夜结束。我得到的结果是今天的结果,但它应该回到上个星期四,减去 -1 周,然后拉出这些上个星期四结束的结果。

应该在这些日期之间提取数据 2015-1-8 通 2015-1-14

但它是从 2015 年 1 月 15 日到 2015 年 1 月 21 日的,而且不应该这样。

 <div class="subtitle">Last Week (12AM Thur to 12AM Thur)</div>
 <div class="totamt">$<?php  
   require_once 'wp-content/themes/azure-basic/connectvars.php';
   $dbc = mysqli_connect(CDB_HOST, CDB_USER, CDB_PASSWORD, CDB_NAME);

   /* Last Week */
     $twoWeeksAgoStart = new DateTime("Thursday last week");
     $twoWeeksAgoEnd = new DateTime("Wednesday");
     $today = new DateTime("now");
     $day = $today->format("1");

     if ($day == "Sunday" || $day == "Monday" || $day == "Tuesday" || $day == "Wednesday") {

     //This DOES NOT WORK from Sunday to Wednesday
     $twoWeeksAgoStart->modify("- 1 week");
     $twoWeeksAgoEnd->modify("- 1 week");

     } else {

     //This DOES actually works on Thursday through Saturday Night
     $twoWeeksAgoStart->modify("+7 days");   
     $twoWeeksAgoEnd->modify("- 1 week");
    }

  $startdates = $twoWeeksAgoStart->format( 'Y-m-d' );
  $enddates = $twoWeeksAgoEnd->format('Y-m-d');


 $query = "SELECT SUM(amountoffeeearned) as totalamount FROM commissioninfo WHERE thedate BETWEEN '$startdates' AND '$enddates'";

    $result = mysqli_query($dbc, $query);
    $row = mysqli_fetch_array($result);

 ?>

【问题讨论】:

  • 你能澄清一下吗?例如,“上周”应该在哪一天更改?例如,在即将到来的星期四,最后一周应该是 15 号到 21 号吗?
  • 我需要前一周的结果。 8日至14日。
  • 但是当我们过了星期天时,它似乎发生了变化。它开始新的一周,从 15 日到 21 日。应该在前一周待到周三晚上。

标签: php mysql


【解决方案1】:

我做了一些简单的测试,我相信这可能对你有用:

if(date('N') == 4){
    $startdates = date("Y-m-d", strtotime("last Thursday"));
    $enddates = date("Y-m-d", strtotime("-1 day"));
}else{
    $startdates = date("Y-m-d", strtotime("last Thursday -1 week"));
    $enddates = date("Y-m-d", strtotime("last Thursday - 1 day"));
}

它检查今天是否是星期四,如果是,则使用“上星期四”和当前日期 -1 天来获取星期。其他任何一天,它使用上周四 - 1 周和上周四 - 1 天来获取时间范围。好像今天是 23 号星期五,在 PHP 的心目中上星期四是前一天(22 号),而上星期四是前一周的星期四。

希望这能奏效并有所帮助!

【讨论】:

    【解决方案2】:

    我还没有彻底测试它,但它可能值得一试。让我知道它是否有效:

    $minus = (date('D') !== 'Thu') ? "-1 week" : "";// Thursday check
    $startdates = date("Y-m-d", strtotime("$minus last Thursday"));
    $enddates = date("Y-m-d", strtotime("last Wednesday"));
    

    希望对你有帮助。

    【讨论】:

    • 这似乎在星期四不起作用。在测试它时,如果我把这个星期四的日期定为 22 日,它的日期是 01/08/2015-01/21/2015。
    • 实际上是周四到周六晚上。如果这是星期四到星期六,我怎么说呢,然后我们采取不同的格式?
    • 我添加了一个检查以防今天是星期四:如果是,则不需要 -1 周
    • 我把你的代码放在了 IF 语句中,剩下的就留下了。我还不得不在 IF 声明中将日期更改为数字,现在它似乎工作得很好。
    • 更新后的代码效果很好!我花了 20 天时间才弄清楚这一点。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-16
    • 2011-07-11
    • 2021-12-31
    相关资源
    最近更新 更多