Mysql日期在哪里?
这是我的存储过程Mysql日期在哪里?,mysql,stored-procedures,Mysql,Stored Procedures,这是我的存储过程 DELIMITER $$ DROP PROCEDURE IF EXISTS `simplesign`.`GetTenantTaskBetweenDate` $$ CREATE DEFINER=`root`@`localhost` PROCEDURE `GetTenantTaskBetweenDate`( IN tid VARCHAR(100), IN fromdate DATE , IN todate DATE, IN searchvalue VAR
DELIMITER $$
DROP PROCEDURE IF EXISTS `simplesign`.`GetTenantTaskBetweenDate` $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `GetTenantTaskBetweenDate`(
IN tid VARCHAR(100),
IN fromdate DATE ,
IN todate DATE,
IN searchvalue VARCHAR(100)
)
BEGIN
SELECT RequestID
FROM task
WHERE ( (TenantID=tid)
AND Create_date BETWEEN fromdate AND todate)
AND (File_name LIKE searchvalue || File_title LIKE searchvalue)
ORDER BY Create_date DESC;
END $$
DELIMITER ;
在以下情况下,我希望所有ReuestID都来自任务表:
如果fromdate和todate为空,则按searchValue搜索
如果fromdate、todate和searchValue不为null,则按所有三个输入进行搜索
如果from fromdate或todate为空,则按searchValue搜索
如果searchValue为空,则按fromdate和todate进行搜索
如果三个输入都为空,则正常搜索,如select*from
请帮我解决这个问题。听起来,如果传递的所有条件都不是空的,您就不想使用它们
DELIMITER $$
DROP PROCEDURE IF EXISTS `simplesign`.`GetTenantTaskBetweenDate` $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `GetTenantTaskBetweenDate`(
IN tid VARCHAR(100),
IN fromdate DATE ,
IN todate DATE,
IN searchvalue VARCHAR(100)
)
BEGIN
SELECT RequestID
FROM task
WHERE (tid is null OR TenantID=tid)
AND (fromdate is null OR Create_date >= fromdate)
AND (todate is null OR Create_date <= todate)
AND (searchvalue is null OR File_name LIKE searchvalue OR File_title LIKE searchvalue)
ORDER BY Create_date DESC;
END $$
DELIMITER ;
感谢您的快速响应,它只适用于日期,如果我传递空白搜索值,那么它将返回0条记录。:1+用于快速响应…:如果您需要发送除null以外的任何内容作为输入,那么您需要更改条件,以与null相同的方式忽略空字符串。