2016-07-04 8 views
1

現在、特定の日付間にクライアントのリード数をカウントするクエリが実行されています。クライアントの中には、1週間にどれくらい多くのリードを受けられるかという制限があります。たとえば、私たちのクライアントはWeekly Limitが6です。月曜日(週の始まり)から日曜日(週末)までリードを実行します。PHP/MySQLでの月曜日と日曜日のクエリの実行

この例のクライアントが先週のリードを9回受け取ったことに気付きました。彼は月曜日(6月27日)に6リードすべてを受け取り、次に日曜日(3月7日)に3リードを受けました。これが私たちのSQLクエリの一部である

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

: - - :

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') 

誰もが、我々はこれを克服する可能性がどのように任意のアイデアを持っている場合は、本当に、それだけでこれは以下の我々のコードである6されている必要があります素晴らしいことだ。私はちょうど愚かな瞬間をしていると思う!

ありがとうございます。

+0

strtotimeはきちんとしていますが、間違いありません。 「今週の月曜日」は実際にすべての使用例で実際に動作することを確認してください。 –

+0

こんにちはマーク、私に戻ってくれてありがとう。それは動作しますが、私たちが実際に日曜日に行くときに問題があるようです。日曜日が月曜日の初めの週の開始と解釈される方法はありますか? –

+0

これはおそらく助けになるでしょう:http://stackoverflow.com/questions/12338087/mysql-how-to-get-next-date-of-the-selected-day PHPで日付計算をしないでくださいstrtotimeではなく。 –

答えて

0

コメントは入力できませんので、答えとして入力してください。月曜日にこれを実行する

、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"; 
} 

は6日目(日曜日)は、 "来週は" 中蹴ったか

$ 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 

注意を与え、あなたは7月11日を取得、第4回ではありません。

+0

こんにちはマーク、私にこれを見せてくれてありがとう。クエリのコードにこれをどのように複製するのですか? –

関連する問題