データベースから次の誕生日を取得しようとしているので、それらの顧客のメーリング リストを作成できます。 $pet_bdate - 管理者は、日付を dateFormat: 'yy-mm-dd' の形式で JQuery datepicker に提供します。 $plus_days - 彼は、日付範囲についても選択できます - 0 から 14 までの選択された日付からプラス日。
サーバー構成: Php v 5.2.17 MySQL v 5.5.23 (そのため、いくつかのより高度な Php 関数は MySql と同様に機能しません)
列petbdayはDATE型です。
クエリは次のとおりです。
SELECT * FROM `customer` c LEFT JOIN `pet` p ON (c.customer_id = p.customer_id)
WHERE (DATE_FORMAT(p.petbday, '%m-%d')
BETWEEN DATE_FORMAT(2014-04-13, '%m-%d') AND DATE_FORMAT(DATE_ADD(2014-04-13, INTERVAL 7 DAY), '%m-%d'))
GROUP BY c.customer_id ORDER BY firstname, lastname, email
そして、これを作成するPHPコードは次のとおりです。
SELECT * FROM `" . DB_PREFIX . "customer` c LEFT JOIN `" . DB_PREFIX . "pet` p ON (c.customer_id = p.customer_id)
WHERE (DATE_FORMAT(p.petbday, '%m-%d') BETWEEN DATE_FORMAT(" . $pet_bdate . ", '%m-%d') AND DATE_FORMAT(DATE_ADD(" . $pet_bdate . ", INTERVAL " . $plus_days . " DAY), '%m-%d')) GROUP BY c.customer_id ORDER BY firstname, lastname, email
このクエリは、DB に誕生日がある日付に対してゼロ行を返します。
年を無視するために、フォーマットされた日付をクエリに渡すにはどうすればよいですか?
クエリに渡す前にフォーマットしてみましたが、Php で日付を計算するときは少し混乱しました。
これを解決する方法について何か提案はありますか?