Se i tuoi products avere un start_date e un end_date e la tua query ha un qstart_date e un qend_date , quindi vogliamo il numero di giorni tra:
GREATEST(start_date, qstart_date)
e
LEAST(end_date,qend_date)
. In MySQL penso che assomigli a
1 + DATEDIFF ( 'd' , GREATEST(start_date, qstart_date) , LEAST(end_date,qend_date) )
E vorrai ignorare i numeri negativi, sostituendoli con "0".