我看到很多例子如何做到这一点,但在我的情况下不起作用。我的应用程序是为renta汽车。我有两张桌子
首先是竞选季节。
季节:
ID Start_date End _date Name
-------------------------------------------------------
1 2016-05-01 2016-08-31 seasonal price
2 2016-09-01 2017-04-31 non seasonal price
season_prices
ID Price ID_Season ID_Car
------ ------ --------- -------------------
1 150 1 1
2 120 2 2
3 70 1 3
4 60 1 4
因此,当用户选择开始日期和结束日期时,会根据日期显示价格。价格根据日期具有不同的价值。
我试试
DELIMITER $$
DROP PROCEDURE IF EXISTS `calculatePrice`$$
CREATE
/*[DEFINER = { user | CURRENT_USER }]*/
PROCEDURE `rentacar_site`.`calculatePrice`(id_car INT,startDate DATE,endDate DATE)
/*LANGUAGE SQL
| [NOT] DETERMINISTIC
| { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }
| SQL SECURITY { DEFINER | INVOKER }
| COMMENT 'string'*/
BEGIN
SELECT a.name, s.name, c.price
FROM season_prices c
INNER JOIN season s ON s.ID = c.ID
INNER JOIN car a ON a.ID = c.ID_Car
WHERE a.ID = id_car AND startDate AND ebdDate BETWEEN s.Start_Date AND s.End_Date ;
END$$
DELIMITER ;
我打电话的时候
CALL calculatePrice(1, '2016-01-05', '2016-08-31');
他回答我是真的,那个赛季的名字和价格。但是当我设置CALL calculatePrice(1, '2016-10-05', '2016-20-05');
所有时间返回NULL
我做错了什么?