声明变量时出错#1064

时间:2015-06-23 14:22:38

标签: mysql

我试图像这样在MySQL中声明和操作变量:

DECLARE @tim;
//find the difference between current time and time at which the data was stored in the database
SET @tim=(select TIMEDIFF(NOW(),E.reg_date)
      FROM `mytable2` E) 

但是我收到以下错误:

  

错误:#1064 - 您的SQL语法出错;检查手册   对应于您的MySQL服务器版本,以获得正确的语法   使用附近的'DECLARE @ tim'在第1行

导致此错误的原因是什么,我该如何避免? MySQL服务器版本是5.6.17。

2 个答案:

答案 0 :(得分:1)

正如错误消息所示,您的语法错误。

tl; dr:SET变量,不要DECLARE它。

DECLARE仅在处理例程(如存储过程,函数和触发器)中的变量时使用。见the documentation

  仅在DECLARE复合语句中允许

BEGIN ... END   并且必须在任何其他陈述之前开始。

你正试图在例行公事之外set a user-defined variable

  

设置用户定义变量的一种方法是发出SET语句:

SET @var_name = expr [, @var_name = expr] ...

您需要了解的有关此声明的所有信息,包括有关设置会话和全局变量的相关信息,都在the documentation for SET

答案 1 :(得分:-1)

select TIMEDIFF(NOW(),E.reg_date) into @tim FROM mytable2 E