接收日期范围。如果不存在开始约会,则从最近的日期获取范围

时间:2016-07-26 11:21:53

标签: mysql

我正在寻找一个MySQL查询,它可以让我查看产品的历史价格变化,以便稍后在图表上显示 - 基于日期范围。

例如:

Select * from HistoryPrices 
where StartDate>='1-1-2016' and EndDate<='1-20-2016' 
where ProductID=505

这很好。这是它变得更有趣的地方。 如果1-1-2016不包含任何产品价格变化,我需要提取过去最近的1-1-2016日期,并在结果中填写1-1-2016

让我们说12-25-2015是最接近的价格变动日期。

示例:

表格如下:

Date        Price
12-25-2015  44.5
1-3-2016    50.5
1-4-2016    45.6
1-10-2016   40.99
1-15-2016   50.50
1-22-2016   50.99

MySQL查询结果应如下(从1-1-2016到1-20-2016):

1-1-2016    44.5
1-3-2016    50.5
1-4-2016    45.6
1-10-2016   40.99
1-15-2016   50.50

1-1-2016的通知价格为12-15-2015价格。

寻找可以实现此结果的MySQL查询。

1 个答案:

答案 0 :(得分:1)

试试这个样本日期:

select *
from HistoryPrices
where `Date` >= date('2016-01-01') and `Date` <= date('2016-01-20')
union (
    select '2016-01-01', Price
    from HistoryPrices
    where `Date` <= date('2016-01-01')
    order by `date` desc
    limit 1
)
order by `date`

Demo Here

And Demo with 2016-01-01 included in data