mysql - 具有两个输入日期时间值的 MySQL 存储过程不返回结果
问题描述
因此,我正在解决一个示例问题,即在 MySQL 中为存储过程使用日期范围的两个输入值。我能够成功创建过程,并且连接可以毫无错误地检索数据,但是当我实际尝试使用存储过程并输入开始日期和结束日期时,我没有得到任何数据。知道为什么吗?
DELIMITER $$
USE northwind$$
CREATE PROCEDURE order_details_date(in begin_date DATETIME, in end_date DATETIME)
BEGIN
SELECT
e.EmployeeID,
e.FirstName,
e.LastName,
e.Region,
o.OrderID,
o.OrderDate,
o.ShipRegion
FROM
employees e
JOIN
orders o ON e.EmployeeID = o.EmployeeID
WHERE o.OrderDate >= @begin_date AND
o.OrderDate <= @end_date
ORDER BY o.OrderDate;
END$$
DELIMITER ;
需要明确的是,我没有收到错误,我只是得到一个没有数据的查询结果。任何帮助,将不胜感激!
解决方案
当您@
在变量名前面使用时,您指的是用户定义的会话变量,而不是过程的输入。您需要删除@
这些名称前面的符号,即
SELECT
e.EmployeeID,
e.FirstName,
e.LastName,
e.Region,
o.OrderID,
o.OrderDate,
o.ShipRegion
FROM
employees e
JOIN
orders o ON e.EmployeeID = o.EmployeeID
WHERE o.OrderDate >= begin_date AND
o.OrderDate <= end_date
ORDER BY o.OrderDate;
请注意,您可以BETWEEN
用作速记,例如
o.OrderDate BETWEEN begin_date AND end_date
推荐阅读
- javascript - jQuery点击传单地图是第一次工作,但不是第二次
- php - 登录后无法设置cookie
- node.js - Azure 存储 - 如何通过 Node.js 还原目录?
- substrate - 基板节点模板构建错误 E0277
- c++ - C++ 字符串分隔符异常
- javascript - STATUS_BREAKPOINT 铬预防措施
- python - 根据子字符串拆分列表元素
- javascript - ReactJs 从本地文件夹下载文件
- linkedin - 如何获取使用给定主题标签发布的linkedin帖子的数量
- javascript - 使用 ant 设计的输入中的 Divs