|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Messaggi: n/a
|
[MySQL] funzione datediff
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: Codice:
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
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. |
|
|
|
#2 |
|
Senior Member
Iscritto dal: Nov 2005
Messaggi: 2780
|
Ciao, io farei così, in pseudocodice, ponendo che domenica=1:
Codice:
firstday=DAYOFWEEK(d1);
lastday=DAYOFWEEK(d2);
totaldays = DATEDIFF(d2,d1);
effectivedays = totaldays - floor(totaldays/7);
if(totaldays%7 != 0)
if( lastday<firstday || firstday=1 || lastday=1 )
effectivedays = effectivedays - 1;
Spero sia corretto, ci ho riflettuto a lungo ma può essermi sfuggito qualcosa. E magari c'è una soluzione ancora più semplice... |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 14:03.



















