如何在MYSQL中创建一个将销售的开始日期和结束日期介于开始日期和终止日期之间的存储过程



这是我第一次使用它,很抱歉造成任何混淆。

我正在尝试创建一个存储过程,该过程获取销售的开始日期和结束日期,并在MYSQL中显示开始日期和终止日期之间的所有销售事务。

所以我有两张桌子:

  1. 订单,其中包含订单日期(order_date(
  2. 每个订单的所有交易的交易两者都通过order_ID链接

这是我的代码

DELIMITER //
CREATE PROCEDURE gettransactions(IN `start date` date , `end date` date)
BEGIN

SELECT * FROM  transactions t
join orders o on t.order_id = o.order_id
WHERE (o.order_date BETWEEN (SELECT MIN(DATE(o.order_date)) FROM orders) AND (SELECT MAX(DATE(o.order_date)) FROM orders));

END //

代码运行良好,我用它插入表格(很抱歉,我不知道为什么我不能直接在这里添加screentshot(:https://i.ibb.co/fMdPF48/sql.png

我的问题是,无论我插入的日期是什么,结果总是我在表中的所有交易。所以,假设我想要从4月7日到6月25日的所有交易,我应该使用:

call chicgirls.gettransactions('2020-04-07', '2020-06-25');

结果应该是这个范围内的订单的交易,为什么我得到了所有的交易?不管我指示的日期是什么,它都会发生。

谢谢

您需要在查询中使用参数。您选择的是所有订单,因为您选择的都是同一表格中最小日期和最大日期之间的所有订单。

SELECT *
FROM transactions AS t
JOIN orders AS o ON t.order_id = o.order_id
WHERE o.order_date BETWEEN `start date` AND `end date`;

最新更新