Ich möchte eine gespeicherte Routine für MySQL erstellen, die die Anzahl der Geschäftstage oder Arbeitstage für einen Monat (Arbeitstage sind Montag bis Freitag) ermittelt.WHILE LOOP mit IF-Anweisung MYSQL
Es ist ein Syntaxfehler, aber ich weiß nicht, was der Syntaxfehler ist. Alles, was es mir sagt ist:
1064 - Sie haben einen Fehler in Ihrer SQL-Syntax; Sie in die Bedienungsanleitung zu Ihrer MySQL-Server-Version für die richtige Syntax entspricht in der Nähe zu verwenden 'WHILE (@daycount < @totaldays) DO IF (WEEKDAY (@checkweekday) < 6) THEN' in Zeile 2
Meine Syntaxfehler ist in der folgenden:
WHILE(@daycount < @totaldays) DO
IF (WEEKDAY(@checkweekday) < 6) THEN
Mein Code:
SELECT MONTH(CURDATE()) INTO @curmonth;
SELECT MONTHNAME(CURDATE()) INTO @curmonthname;
SELECT DAY(LAST_DAY(CURDATE())) INTO @totaldays;
SELECT FIRST_DAY(CURDATE()) INTO @checkweekday;
SELECT DAY(@checkweekday) INTO @checkday;
SET @daycount = 0;
SET @workdays = 0;
BEGIN
WHILE(@daycount < @totaldays) DO
IF (WEEKDAY(@checkweekday) < 6) THEN
SET @workdays = @workdays+1;
END IF;
SET @daycount = @daycount+1;
SELECT ADDDATE('@checkweekday', INTERVAL 1 DAY) INTO @checkweekday;
END WHILE;
END;
SELECT @workdays;
ist jemand in der Lage zu helfen?
UPDATE ich den gleichen Fehler mit dem folgenden Stück Code erhalten, so dass es wahrscheinlich etwas damit zu tun hat:
SET @workdays = 0;
IF (WEEKDAY('2013-06-13') < 6) THEN
SET @workdays = @workdays+1;
END IF;
SELECT @workdays;
Haben Sie eine Funktion 'FIRST_DAY()'? –
Ja, das tue ich. Der Webhost hat diese Funktion tatsächlich automatisch. Ich schrieb mein eigenes und erkannte, dass es funktioniert, wenn ich die Funktion ohne meine benutze. Der first_day() ist nicht der Fehlerort. Es passiert es ohne Probleme. – scrfix