如果最初发送的值为零,我需要将21600000分配给fromDate
我现在的代码是
CREATE PROCEDURE reportFreeCooling(
IN fromDate VARCHAR (50),
IN toDate VARCHAR (50),
IN timeZone VARCHAR (50)
)
BEGIN
DECLARE startDate VARCHAR (50);
DECLARE endDate VARCHAR (50);
DECLARE startDateOriginal VARCHAR (50);
DECLARE mylogID INT;
DECLARE myItemId varchar (50);
DECLARE myItemId2 varchar (50);
DECLARE xHours varchar (50);
DECLARE endHoursNull varchar(50);
DECLARE endHoursNotNull varchar (50);
当然还有其余的存储过程。其余的是正确的我只需要知道如果零是发送的内容,如何更改fromDate。
答案 0 :(得分:2)
我还没有测试过这些,但它们可能会指出你正确的方向。
选项1:使用字符串比较比较fromDate ...
IF fromDate = "0" THEN
SET @fromDate = '21600000';
ELSEIF fromDate > 0 THEN
...
ELSE
...
END IF;
选项2:将from从varchar转换为int
DECLARE fromDateInt INT;
SELECT CONVERT(fromDate as SIGNED) INTO fromDateInt;
IF fromDate = 0 THEN
SET @fromDate = '21600000';
...
Cast from VARCHAR to INT - MySQL
另外,您可能想检查/处理: 1.Date可能是浮动吗? 2.DateDate可能为NULL吗?
答案 1 :(得分:0)
这段代码实际上需要一个;在set语句的末尾和if语句的结尾。
IF firstRowDate > startDateOriginal THEN SET startDateOriginal = firstRowDate; END IF;