从mysql表中查找给定日期的速率

时间:2017-10-26 11:49:21

标签: mysql date

我有一张桌子:

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-01和2017-10-10之间的找到rate产品pdt_id 5

对于2017-10-01,表中没有任何费率所以我采取较短的日期,如2017-09-30(无记录),2017-09-29(无记录)等等(不幸的是没有记录)。所以我把2017-10-01的更大日期改为2017-10-02(是的,有记录)所以我停止搜索并最终确定为

2017-10-01  rate is 20

现在找到2017-10-02的下一个日期,有记录并且是20

2017-10-02  rate is 20

遵循我得到的类似标准

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

所以我的问题是如何如果日期存在则查找给定日期的费率其他明智地采取较小日期的比率,如果较小的日期不存在,则找到下一个更大日期的比率

最后我们获得所有日期的费率(从开始日期到结束日期)。

我怎样才能做到这一点?

$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
}

1 个答案:

答案 0 :(得分:0)

这是一种方法:

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