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
我不明白为什么会出现语法错误?
这是一个更大程序的一部分,但指出这是不正确的
错误讯息: SQL错误(1064):您的SQL语法中有错误;查看与您的MySQL服务器版本对应的手册,以便在附近使用正确的语法 'SELECT CONCAT(FLOOR(HOUR(TIMEDIFF(end_time,start_time))/ 24,'days','at line 11
和totalTime被声明为VARCHAR(50)
答案 0 :(得分: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
。
答案 1 :(得分:0)
我认为可能是这样,因为FLOOR
,HOUR
,TIMEDIFF
等需要周围的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
否则它可能不会将此单词解释为函数调用类型并抛出“保留字”错误。 (我假设END WHILE;
已经在代码中的某处。)
请检查并告诉我。