如何创建一个存储过程,该过程采用 MYSQL 中开始日期和结束日期之间的销售开始日期和结束日期
how to create a stored procedure that takes the start and end dates of the sales between the start and the end dates in MYSQL
这是我第一次使用它,如有任何混淆,敬请谅解。
我正在尝试创建一个存储过程,它获取销售的开始日期和结束日期,并在 MYSQL 中显示开始日期和结束日期之间的所有销售交易。
所以我有 2 tables:
- 包含订单日期的订单 (order_date)
- transactions 与每个订单的所有交易
均由 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 //
代码运行良好,我得到它来插入 tables(抱歉,我不知道为什么我无法在此处直接添加屏幕截图):
https://i.ibb.co/fMdPF48/sql.png
我的问题是,无论我插入什么日期,结果总是我在 table 中的所有交易。所以假设我想要从 4 月 7 日到 6 月 25 日的所有交易,我应该使用:
call chicgirls.gettransactions('2020-04-07', '2020-06-25');
结果应该是这个范围内订单的成交,为什么我得到的都是成交?无论我输入什么日期,它都会发生。
谢谢
您需要在查询中使用参数。您正在选择所有订单,因为您正在选择同一 table.
中最小日期和最大日期之间的所有内容
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`;
这是我第一次使用它,如有任何混淆,敬请谅解。
我正在尝试创建一个存储过程,它获取销售的开始日期和结束日期,并在 MYSQL 中显示开始日期和结束日期之间的所有销售交易。
所以我有 2 tables:
- 包含订单日期的订单 (order_date)
- transactions 与每个订单的所有交易 均由 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 //
代码运行良好,我得到它来插入 tables(抱歉,我不知道为什么我无法在此处直接添加屏幕截图): https://i.ibb.co/fMdPF48/sql.png
我的问题是,无论我插入什么日期,结果总是我在 table 中的所有交易。所以假设我想要从 4 月 7 日到 6 月 25 日的所有交易,我应该使用:
call chicgirls.gettransactions('2020-04-07', '2020-06-25');
结果应该是这个范围内订单的成交,为什么我得到的都是成交?无论我输入什么日期,它都会发生。
谢谢
您需要在查询中使用参数。您正在选择所有订单,因为您正在选择同一 table.
中最小日期和最大日期之间的所有内容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`;