Pp. ca aceasta conditie este indeplinita atunci pentru a calcula diferenta:
[1] calculezi limita inferioara a intervalului comun cu @inf = MAXIM(DATA1 , @D1) ,
[2] calculezi limita superioara a intervalului comun cu @sup = MINIM(DATA2 , @D2) ,
[3] calculezi diferenta intre cele doua date calendaristice @inf si @sup.
La [1] si [2] folosesti CASE ... END CASE la [3] folosesti DATEDIFF:
SELECT ... DATEDIFF(
dd,
CASE DATA1>=@D1 THEN DATA1 ELSE @D1 END CASE,
CASE DATA2<=@D2 THEN DATA2 ELSE @D2 END CASE
) AS NumarZileComune
FROM ...
WHERE NOT( DATA2 < @D1 OR @D2 < DATA1 )