我想查询上周从周四到周三的结果。
今天是 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);
?>
最佳答案
我做了一些简单的测试,我相信这可能对你有用:
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 号),上星期四是前一周的星期四。
希望这有效并有所帮助!
关于PHP MySQL 查询以在上周周四至周三获得结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28014485/