如果最初发送的值为零,我需要将2160000赋给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是发送的内容。

最佳答案

我没有测试过这些,但它们可能会指引你正确的方向。
选项1:使用字符串比较比较fromDate
...

IF fromDate = "0" THEN
   SET @fromDate = '21600000';
ELSEIF fromDate > 0 THEN
   ...
ELSE
   ...
END IF;

选项2:从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
另外,您可能需要检查/处理:
一。fromDate可以是一个float吗?
2。fromDate可以为空吗?

关于mysql - 为IN变量增加值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20831629/

10-10 13:09