Mi piacerebbe creare una routine memorizzata per MySQL che calcoli il numero di giorni lavorativi o lavorativi per un mese (i giorni lavorativi sono dal lunedì al venerdì).WHILE LOOP con IF STATEMENT MYSQL
È un errore di sintassi, tuttavia non so quale sia l'errore di sintassi. Tutto quello che mi dice è:
1064 - Si ha un errore nella sintassi SQL; controllare il manuale che corrisponde alla versione del server MySQL per la sintassi diritto di utilizzare vicino 'mentre (@daycount < @totaldays) FARE SE (giorno della settimana (@checkweekday) < 6) POI' at line 2
la mia Errore di sintassi è la seguente:
WHILE(@daycount < @totaldays) DO
IF (WEEKDAY(@checkweekday) < 6) THEN
My 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;
è qualcuno in grado di assistere?
UPDATE ricevo lo stesso errore con il seguente pezzo di codice in modo che probabilmente ha qualcosa a che fare con questo:
SET @workdays = 0;
IF (WEEKDAY('2013-06-13') < 6) THEN
SET @workdays = @workdays+1;
END IF;
SELECT @workdays;
Hai una funzione 'FIRST_DAY()'? –
Sì, sì. Il webhost ha effettivamente quella funzione automaticamente. Ho scritto il mio e ho capito che quando uso la funzione senza la mia funziona ancora. Il primo_giorno() non è dove l'errore è comunque. Lo passa senza problemi. – scrfix