【发布时间】:2019-02-13 07:57:27
【问题描述】:
我在数据库中有两个表。 '汽车','预订'
表格“汽车”具有以下列
id -> 主键
name -> 车辆名称,如 SUV、STANDARD、ECONOMY
count -> 可用汽车数量
表 'reservation' 有以下列
id -> 预留 id 自动递增
date_out -> 预订开始日期,例如:'2019-01-01 00:00:00'
date_in -> 预订结束日期,例如:'2019-01-05 23:59:59'
car_name -> 表'car'中的汽车名称之一
我想查询数据库以显示某个日期范围内每种类型汽车的可用性/短缺情况。
所以输出应该和这张表类似。
----date----- car_name 可用性/短缺
2019-01-01 ----SUV---- 1
2019-01-01 经济 -1
负号表示短缺
正号表示可用性
我做了什么
此查询仅适用于指定的单个日期和汽车名称。
Set @forDate = '2019-02-14';
Set @car = 'STANDARD';
Set @total_reservation = (select count(*) as total_reservation from (
select date_out, date_in, car_type from reservation
where date_in > @forDate and date_out < @forDate
and car_type = @car
)AS t1);
select @total_reservation;
Set @car_count = (select count from car where name = @car);
select @car_count;
select @car_count - @total_reservation;
我在将查询转换为用户输入的日期范围时遇到问题。
【问题讨论】:
-
为什么不使用
BETWEEN来获取特定日期范围的数据。 -
您使用的是什么版本的 MySQL? 8.xx 还是 5.xx?
-
MySql 8 @SalmanA