2017-10-26 8 views
0

から指定した日付のレートを探す:私はテーブルがあるmysqlのテーブル

adate    pdt_id  pdt_rate 
2017-10-02   5   20 
2017-10-05   5   25 
2017-10-07   5   23 
2017-10-11   5   20 

私は日付2017年10月1日と2017年10月10日の間ためpdt_id 5と製品のrateを見つけなければなりません

2017-10-01の場合、私は2017-09-30(レコードなし)、2017-09-29(レコードなし)などのように小さい日付をとるなど、残念ながらレコードはありません)。だから今、次の日付を見つけ、私は2017年10月1日より大きい日が2017年10月2日であるターン(はい、レコードがある)ので、私は、検索を停止し、

2017-10-01 rate is 20 

として確定します2017-10- 02、レコードが存在していると私は

2017-10-03 rate is 20 
2017-10-04 rate is 20 
2017-10-05 rate is 25 
.... 
2017-10-10 rate is 23 

を得た同様の基準に従い20

2017-10-02 rate is 20 

あるだから私の質問は、日付が、他のは賢明率を取る存在する場合指定した日付のレートを検索する方法でありますより小さいより少ない日付が存在しない場合は、次の大きい日付の割合を見つける

最後に、すべての日付(開始日から終了日まで)のレートを取得します。

どうすればこの問題を解決できますか?ここで

$begin = new DateTime('2017-10-01'); 
$end = new DateTime('2017-10-10'); 

$daterange = new DatePeriod($begin, new DateInterval('P1D'), $end); 

foreach($daterange as $date){ 
    $dateval = $date->format("Y-m-d"); 
    // here I want find the rate for each date 
} 
+0

PHPやMySQLのコードを書くことについて、この質問ですか?両方のタグを使用しました。 –

+0

@GrzegorzAdamKowalski、 'mysql query' PHPタグを削除しました – next2u

答えて

0

は一つの方法である:

select t.* 
from t 
order by (adate <= '2017-10-01') desc 
     abs(datediff(adate, '2017-10-01')) 
limit 1; 
関連する問題