Bir ay boyunca iş günlerini veya iş günlerini hesaplayan MySQL için saklı bir yordam oluşturmak istiyorum (Çalışma Günleri Cuma gününden Cuma gününe kadar).IF STATEMENT ile LOOP MYSQL
Bu bir sözdizimi hatası, ancak sözdizimi hatasının ne olduğunu bilmiyorum. Tüm söyler bana:
1064 - SQL sözdiziminizde bir hata var; Doğru sözdizimi yakın kullanmak için MySQL sunucu sürümü ile uyumlu kılavuzu 'SÜRE (@daycount < @totaldays) DO IF (WEEKDAY (@checkweekday) < 6) SONRA' hattında 2
Benim dizimi Hatası takip eden yerlerde:
WHILE(@daycount < @totaldays) DO
IF (WEEKDAY(@checkweekday) < 6) THEN
Benim Kod:
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;
edebilmek birisi yardımcı olmak mı? Sana saklanan prosedürün dışında conditionals sahip olamayacağını keşfettim
SET @workdays = 0;
IF (WEEKDAY('2013-06-13') < 6) THEN
SET @workdays = @workdays+1;
END IF;
SELECT @workdays;
'FIRST_DAY()' işleviniz var mı? –
Evet. Webhost aslında bu işlevi otomatik olarak yapar. Kendi kendimi yazdım ve bu işlevi benim olmadan kullanmamın hala işe yaradığını fark ettim. İlk_day(), hatanın nerede olduğu değil. Problemsiz geçiyor. – scrfix