Mysql 日期范围之间的总价(如酒店预订季节)

Mysql 日期范围之间的总价(如酒店预订季节),mysql,sql,date,range,Mysql,Sql,Date,Range,这是我的价格表;我想用我的日期范围计算总价 我想显示所有汽车的总价格 例如,我的筛选日期: 日期1:2014-06-01 日期2:2014-06-22 结果 我尝试过这个,但它只适用于一种龋齿。 还有这个, 假设您有变量@date1和@date2,您可以通过条件聚合来实现这一点: CARID TOTAL ------ ------ 1 2100 2 2150 3 4150 这只是将表中每个时段的边界替换为与外部边界的交点。然后将持续时间与价格相加。1+似乎

这是我的价格表;我想用我的日期范围计算总价

我想显示所有汽车的总价格

例如,我的筛选日期:

日期1:2014-06-01
日期2:2014-06-22

结果 我尝试过这个,但它只适用于一种龋齿。

还有这个,

假设您有变量
@date1
@date2
,您可以通过条件聚合来实现这一点:

CARID    TOTAL
------ ------
1      2100
2      2150
3      4150

这只是将表中每个时段的边界替换为与外部边界的交点。然后将持续时间与价格相加。
1+
似乎可以处理以下情况:
date2
似乎是价格的有效日期,而不是它不活动的第一个日期。

能否添加预期结果,请“计算酒店预订”?“展示所有汽车”?“我们中至少有一个人很困惑。”霍拉西奥将列出三辆车。车号和总价。carID 1->100*21=2100 carID 2->(100*5)+150+(15*100)=2150 carID 3->150+(20*200)=4150@GordonLinoff比如酒店预订系统,carID或hotelID。日期范围对我的工作很重要!这是工作。但如果date1和date2是相同的,则不起作用。我使用这样的总和(最大值(最小值(f.date2,$date2')-最大值(f.date1,$date1'),0)*f.Ittar)/$day,因为Ittari如果月份不一样,代码不起作用,请再次检查?@imugur。范围的含义取决于第二个日期是否属于范围。通过在计算中明智地添加或减去
1
,可以解决此类问题。
CARID    TOTAL
------ ------
1      2100
2      2150
3      4150
select carid,
       sum(1 + greatest(least(date2, @date2) - greatest(date1, @date1), 0) * price)
from table t
group by carid;