如何将DateTime字段分配给变量

时间:2017-11-06 15:58:24

标签: mysql stored-procedures

我想将查询的值分配给MySql存储过程中的日期时间变量。

我正在尝试这个 -

DECLARE myDate DATETIME;

SET myDate = (SELECT date1 FROM myTable WHERE Id = var_myId);

这个

DECLARE myDate DATETIME;

SELECT date1 into myDate FROM myTable WHERE Id = var_myId;

两者似乎都不起作用,因为在运行proc后我没有得到所需的结果。

修改

问题在于此声明 -

initial_Date DATETIME; -- param1
interval INTEGER;      -- param2

SET var_date2 = DATE_ADD(initial_Date , INTERVAL interval MINUTE);

当我选择var_date2时,我的结果为空。

1 个答案:

答案 0 :(得分:0)

我发现存储过程存在两个问题。

首先,您使用sql关键字interval命名变量。您应该使用不是sql关键字的单词重命名。

另一个是你没有设置输出变量。您可以看到the MySQL tutorials on stored procedure.

您可以使用并尝试以下代码:

delimiter //
create procedure test(in initial_time datetime, in minuteInterval integer(2),
                 out final_time datetime)
begin
  set final_time = date_add(initial_time, interval minuteInterval minute);
end//
delimiter ;

对于测试,您可以尝试:

call test(now(), 60, @final_time);
select @final_time;

以下是我使用 mysql 5.5.21 进行测试的屏幕截图: test result