如何在 mysql 中创建带有可选 DateTime 参数的存储过程

How to create a Stored Procedure with Optional DateTime Parameters in mysql

因此存储过程中的参数是可选的,这意味着它们可以为空。我的 cade 的问题是每当我调用 SP 时都没有输出。我需要我的参数也能够接受 null

CREATE PROCEDURE `GET`(
in startDate DATETIME,
in endDate DATETIME
)
BEGIN
SELECT * FROM DB.table
WHERE
DB.table.colunm >= startDate
AND
DB.table.colunm  <= endDate;
END

当我调用存储过程时,我从未得到任何结果

call GET(2022-05-28, 2022-05-30)

call GET(null, null)

如果您想在传递 null 值时检索所有记录,您可以使用 IF... ELSE... Statement 来确定您的 Stored Procedure 将 select 的内容。

检查以下SP:

CREATE PROCEDURE GETDT(
in startDate DATETIME,
in endDate DATETIME
)
BEGIN
if startDate is null or endDate is null then
  SELECT * FROM test;
else
  SELECT * FROM test
  WHERE
  test.sdate >= startDate
  AND
  test.edate  <= endDate;
end if;
END 

查看 db-fiddle 的结果。