0
WHILE x > 1 DO
SET x = x - 1;    
SET totalTime =  SELECT CONCAT(FLOOR(HOUR(TIMEDIFF(end_time,start_time)) / 24), ' days ',

MOD(HOUR(TIMEDIFF(end_time,start_time)), 24), ' hrs ',

MINUTE(TIMEDIFF(end_time,start_time)), ' minutes ') AS total_Time

我不明白为什么我有语法错误?

这是一个更大程序的一部分,但指出这个 aa 是不正确的

错误信息:SQL 错误 (1064):您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 11 行的 'SELECT CONCAT(FLOOR(HOUR(TIMEDIFF(end_time,start_time)) / 24,'days',' 附近使用正确的语法

并且 totalTime 被声明为 VARCHAR(50)

4

2 回答 2

1

SELECT如果要设置变量的值,则不需要使用关键字。

SET totalTime = CONCAT(FLOOR(HOUR(TIMEDIFF(end_time,start_time)) / 24), ' days ',

MOD(HOUR(TIMEDIFF(end_time,start_time)), 24), ' hrs ',

MINUTE(TIMEDIFF(end_time,start_time)), ' minutes ');

如果要使用SELECT关键字,那么正确的语法是:

SELECT CONCAT(FLOOR(HOUR(TIMEDIFF(end_time,start_time)) / 24), ' days ',

MOD(HOUR(TIMEDIFF(end_time,start_time)), 24), ' hrs ',

MINUTE(TIMEDIFF(end_time,start_time)), ' minutes ') INTO totalTime;

记下添加的代码INTO variable name

于 2012-12-03T02:13:13.813 回答
0

我认为可能是,因为FLOOR,HOURTIMEDIFF需要一个环境,SELECT例如:

WHILE x > 1 DO
SET x = x - 1;    
SET totalTime =  SELECT CONCAT( SELECT FLOOR( SELECT HOUR( SELECT TIMEDIFF(end_time,start_time)) / 24), ' days ',

SELECT MOD( SELECT HOUR( SELECT TIMEDIFF(end_time,start_time)), 24), ' hrs ',

SELECT MINUTE(SELECT TIMEDIFF(end_time,start_time)), ' minutes ') AS total_Time

否则它可能不会将此 Words 解释为一种函数调用并引发“保留字”错误。(我假设END WHILE;您的代码中已经存在。)请检查并告诉我。

于 2012-12-02T23:00:42.690 回答