【问题标题】:Running a Query for Between Monday and Sunday in PHP/MySQL在 PHP/MySQL 中运行周一和周日之间的查询
【发布时间】:2016-07-04 18:24:58
【问题描述】:

我们目前遇到一个问题,我们正在运行查询以计算我们的客户在特定日期之间拥有的潜在客户数量。我们的一些客户对他们在一周内可以获得的潜在客户数量有限制。例如,我们的一个客户的每周限制为 6。我们从周一(一周开始)到周日(一周结束)运行我们的潜在客户。

我们注意到示例中的客户上​​周收到了 9 个潜在客户。他在周一(6 月 27 日)收到了所有 6 条线索,然后在周日(7 月 3 日)又收到了 3 条线索。真的,它应该只有 6。这是我们下面的代码:-

$monday = date('Y-m-d', strtotime("monday this week"));
$sunday = date('Y-m-d', strtotime("+6 day",strtotime("monday this week")));

这是我们 SQL 查询的一部分:-

AND (a.overall_weekly > (SELECT COUNT(c.id) AS countId FROM company_referrals c, referrals r WHERE r.id = c.referral_id AND c.company_id = a.id AND r.date >= '".$monday." 00:00:00' AND r.date <= '".$sunday." 23:59:59' AND c.successful = 1) OR a.overall_weekly = '-1')

如果有人知道我们如何克服这个问题,那就太好了。我想我只是有一个愚蠢的时刻!

提前谢谢大家。

【问题讨论】:

  • strtotime 很简洁,但并非绝对可靠。确保“本周星期一”确实适用于您的所有用例。
  • 嗨,马克,感谢您回复我。它确实有效,但是当我们真正到周日时似乎存在问题。有没有一种方法可以将星期日解释为星期一之后一周的开始?
  • 这可能会有所帮助:stackoverflow.com/questions/12338087/… 不要在 php 中进行日期数学运算,而且绝对不能使用 strtotime。

标签: php mysql date


【解决方案1】:

作为答案,因为它不适合评论。

在 7 月 4 日星期一运行:

<?php

$now = time();
echo "Currently: ", date('r', $now), "\n";
for($i = 0; $i < 7; $i++) {
        echo "i:$i\t ", date('r', strtotime("monday this week", $now + ($i * 86400))), "\n";
}

给予

$ php z.php
Currently: Mon, 04 Jul 2016 13:39:55 -0500
i:0      Mon, 04 Jul 2016 00:00:00 -0500
i:1      Mon, 04 Jul 2016 00:00:00 -0500
i:2      Mon, 04 Jul 2016 00:00:00 -0500
i:3      Mon, 04 Jul 2016 00:00:00 -0500
i:4      Mon, 04 Jul 2016 00:00:00 -0500
i:5      Mon, 04 Jul 2016 00:00:00 -0500
i:6      Mon, 11 Jul 2016 00:00:00 -0500

注意在第 6 天(星期日),“下周”开始了,你得到的是 7 月 11 日,而不是 4 日。

【讨论】:

  • 嗨,马克,谢谢你给我看这个。我如何将它复制到我的查询代码中?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-31
  • 2019-10-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多