Ich versuche, einen Endtermin zu erhalten, wenn eine Anzahl von Tagen (pplazo Eingang) abgelaufen ist, auf einem Datum beginnen (pfecha Eingang), und die Vermeidung von um bestimmte Daten zu zählen (feriado), die in einer Tabelle aufgeführt sind.MySQL versagt Tage zu einem Datum hinzuzufügen, wenn Monat über
Bisher ist es das, was ich habe, um eine gespeicherte Prozedur:
Eingangsparameter:
pfecha - DATUM
pplazo - INT (11)
PROC:BEGIN
DECLARE i INT(1);
START TRANSACTION;
SET i=1;
lazo:LOOP
IF NOT EXISTS (SELECT * FROM feriados WHERE feriado=pfecha+i)
THEN
SET pfecha=pfecha+1;
SET i=i+1;
END IF;
IF i=pplazo
THEN
LEAVE lazo;
END IF;
END LOOP lazo;
COMMIT;
SELECT pfecha as respuesta;
END
Die Sache ist, wenn die Tage zu zählen, um das Datum gehen das Ende des Monats gehen, dann die "respe sta "wendet sich an 0000-00-00. Dies sollte nicht passieren, wenn ich 15 Tage ab dem 2016-04-20 eingeben, dann sollte das resultierende Datum etwa 2016-05-5 sein.
Können Sie meinen Fehler erkennen? Könnten Sie mir in die richtige Richtung zeigen?
Verwenden Sie 'DATE_ADD (pfecha, INTERVALL 1 DAY)'. – Barmar
Möchtest du wirklich 1 zu "pfecha" und "i" hinzufügen? Das wird Ihre Abfrage jedes Mal um 2 Tage durch die Schleife springen lassen. – Barmar
@Drew das ist weil ich am Ende keine ihrer Antworten verwendet ... sollte ich die beste Antwort trotzdem wählen? peinlich. – GonHL