Si sus products tener una start_date y una end_date y su consulta tiene un qstart_date y un qend_date , entonces queremos el número de días entre:
GREATEST(start_date, qstart_date)
y
LEAST(end_date,qend_date)
. En MySQL creo que esto se parece a
1 + DATEDIFF ( 'd' , GREATEST(start_date, qstart_date) , LEAST(end_date,qend_date) )
Y querrá ignorar los números negativos, reemplazándolos con "0".