PHP MySQL查询从周四到周三上周获得结果

时间:2015-01-18 20:27:40

标签: php mysql

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

今天是第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);

 ?>

2 个答案:

答案 0 :(得分: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天),上周四是上周四,也就是前一周的星期四。

希望这有效并且有所帮助!

答案 1 :(得分:0)

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

$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"));

希望它有所帮助。