2016-03-20 14 views
1

を選択するだから私は、罰金以下のコードの出力を収集しており、10ヶ月前に私に今日の日付と、日付を表示:PHPのSQL

$today = date("Y/m/d"); 
$months = date("Y/m/d", strtotime("-10 months")); 

echo $today; // 2016/03/20 
echo "</br>"; 
echo $months; //2015/05/20 

今、私は次のコードを使用しようとしています。私は自分のDBに「date_of_test」という列を持っており、この10ヶ月間にテストされた生徒を表示したいだけです。しかし、過去10ヶ月以内にDBに日付があることを知っていても結果は得られません。私が今日と数ヶ月の注文を入れ替えると、私は1月と今の間の日付しか取れません。何か案は?!

$query = "SELECT * FROM year9_records WHERE date_of_test BETWEEN '$today' AND '$months'"; 
$result = mysqli_query($conn,$query) or die("Error".mysqli_error($conn)); 
$row = mysqli_fetch_assoc($result); 
$num_rows = mysqli_num_rows($result); 
+0

あなたは$ヶ月今日$を切り替えて試してみましたあなたの質問に?現在のバージョンでは、最初の制限は2番目の制限よりも大きいです。私はそれが許されているかどうかは完全にはわかりません。 – Gentle153

+0

/%Y '、 '$クエリ=「DATE_FORMAT BETWEEN date_of_test year9_records SELECT * FROM(日付( '$今日')、 '%Y /%mは/%dの')とDATE_FORMAT(日付( '$ヶ月を')試してみてください%m /%d ') ";' – Matt

+0

ありがとうございました。与えられたすべてのクエリは、私が望む出力に関して同じように機能しました! –

答えて

1

私はSQLソリューションを好むでしょう。あなたはDATE_SUBを使用することができます。

"SELECT * FROM year9_records WHERE date_of_test >= DATE_SUB(now(), INTERVAL 10 MONTH)"; 

DATE_SUB()関数は、指定された日から期間を減算します。この場合now() - 10 months

はあなたがPHPソリューションを好む場合は、あなたがあなたのテーブルにDATEとしてdate_of_testを保存仮定すると、10ヶ月前に振り返ってみるための最も適切な方法は、次のようになります。

$tenmonthsback = date("Y-m-d", mktime(0, 0, 0, date("m")-10, date("d"), date("Y"))); 
"SELECT * FROM `year9_records` WHERE `date_of_test` BETWEEN '$today' AND '$tenmonthsback'"; 
1

条件を使用して日付をテストする場合は、左側のサイト「And」に最初の日付が必要です。 date_of_test時間があれば、あなただけではなく、午後12時00

がこれを読んで、すべての今日の時間を取得するために1日追加必要

$query = "SELECT * FROM year9_records WHERE date_of_test >= '$months' AND date_of_test <= '$today'" 

https://docs.oracle.com/cd/B28359_01/server.111/b28286/conditions011.htm

$query = "SELECT * FROM year9_records WHERE date_of_test BETWEEN '$months' AND '$today'" 

それに等しいです

あなたは今日以降の日付を持っていない場合は、間を必要はありません。

$query = "SELECT * FROM year9_records WHERE date_of_test >= '$months'"