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

構文エラーが発生する理由がわかりません。

これはより大きな手順の一部ですが、これが正しくないことを示しています

エラー メッセージ: 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、そうかもしれません。HOURTIMEDIFFSELECT

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;はすでにコードのどこかにあると思います。) 確認して、お知らせください。

于 2012-12-02T23:00:42.690 に答える