この問題に関する投稿をいくつか見ましたが、正しく機能していません。最初に文字列として POST する PHP 変数があります。1 週間の日付範囲を処理できるようにするために、strToTime を使用してこれを日時形式に変換しています (たとえば、2013 年 7 月 22 日は 1374476400 としてエコーします)。
私のテーブルには、日付が Ymd 形式のテキストとして保存されています (たとえば、2013 年 7 月 22 日は 2013-07-22 として保存されます)。これら 2 つの値を比較してクエリを実行し、1 週間の範囲内の日付を見つける必要があるため、比較のためにそのテキストを日時形式に変換しようとしています。
私が使用しているSQLは次のとおりです。
$wk_begin = $_POST['wk_begin'];
$wk_begin = strToTime($wk_begin);
$wk_end = $wk_begin + 8;
$sql = "SELECT * FROM myTable WHERE (DATE(date)>=$wk_begin AND DATE(date)<$wk_end)";
エラーは発生していませんが、テーブルに 7 つの一致するレコードがあることがわかっているにもかかわらず、クエリでレコードが取得されません。だから私は2つの質問があります:
1)これについてもっと良い方法はありますか?2)私が正しい軌道に乗っている場合、正しく比較できるように、テキストベースの日付を大きな整数に変換するSQLステートメントを取得するにはどうすればよいですか。
どんな助けでも大歓迎です。ありがとう!
編集:すべての提案をありがとう。日付が「日付」形式で保存されるようにテーブルを変更しました(文字列はもうありません)。これが更新されたコードです。まだ値を取得していません:
$wk_begin = $_POST['wk_date'];
$wk_end = $wk_begin + 7;
$sql = "SELECT * FROM Workouts WHERE 'date' BETWEEN '$wk_begin' AND '$wk_end'";