anonimizzato
23-02-2011, 12:19
Ciao a tutti,
ho bisogno di utilizzare una funzione in MySQL che calcoli la differenza tra due date senza considerare la domenica.
In rete ho trovato questa:
BEGIN
DECLARE dow1, dow2, days INT;
SET dow1 = DAYOFWEEK(d1);
SET dow2 = DAYOFWEEK(d2);
SET days = FLOOR( DATEDIFF(d2,d1)/7 ) * 5 +
CASE
WHEN dow1=1 AND dow2=7 THEN 5
WHEN dow1 IN(7,1) AND dow2 IN (7,1) THEN 0
WHEN dow1=dow2 THEN 1
WHEN dow1 IN(7,1) AND dow2 NOT IN (7,1) THEN dow2-1
WHEN dow1 NOT IN(7,1) AND dow2 IN(7,1) THEN 7-dow1
WHEN dow1<=dow2 THEN dow2-dow1+1
WHEN dow1>dow2 THEN 5-(dow1-dow2-1)
ELSE 0
END;
RETURN days;
END
Ma esclude non solo la domenica ma anche il sabato.
Ho provato a ragionarci un pò sopra ma non ho capito come modificarla per i miei scopi.
Mi potreste dare una mano?
Grazie in anticipo.
ho bisogno di utilizzare una funzione in MySQL che calcoli la differenza tra due date senza considerare la domenica.
In rete ho trovato questa:
BEGIN
DECLARE dow1, dow2, days INT;
SET dow1 = DAYOFWEEK(d1);
SET dow2 = DAYOFWEEK(d2);
SET days = FLOOR( DATEDIFF(d2,d1)/7 ) * 5 +
CASE
WHEN dow1=1 AND dow2=7 THEN 5
WHEN dow1 IN(7,1) AND dow2 IN (7,1) THEN 0
WHEN dow1=dow2 THEN 1
WHEN dow1 IN(7,1) AND dow2 NOT IN (7,1) THEN dow2-1
WHEN dow1 NOT IN(7,1) AND dow2 IN(7,1) THEN 7-dow1
WHEN dow1<=dow2 THEN dow2-dow1+1
WHEN dow1>dow2 THEN 5-(dow1-dow2-1)
ELSE 0
END;
RETURN days;
END
Ma esclude non solo la domenica ma anche il sabato.
Ho provato a ragionarci un pò sopra ma non ho capito come modificarla per i miei scopi.
Mi potreste dare una mano?
Grazie in anticipo.