Have to ask: Was there something wrong/not working with the answer in
How to update a date range?[
^] or is this a different situation?
[Addition]
Since this was a new case, perhaps something like this:
DECLARE @Product TABLE (Date_From Datetime, Date_To Datetime, Product_ID INT)
INSERT INTO @Product Values ('20110320', '20110330', 101)
DECLARE @Beg Datetime, @End Datetime
SET @Beg = '20110324'
SET @End = '20110326'
DECLARE @Temp TABLE (DateVal Datetime, Date_Type int, Product_ID INT)
insert into @Temp
select Date_From, 1, Product_ID
from @Product
union all
select Date_To, 2, Product_ID
from @Product
insert into @Temp
select @Beg, 2, 101
union all
select @End, 1, 101
delete from @Product;
insert into @Product
select q1.dateval,
( select min(q2.dateval)
from @Temp q2
where q2.Date_type = 2
and q2.dateval > q1.dateval),
q1.Product_ID
from @Temp q1
where q1.Date_type = 1
SELECT * FROM @Product ORDER BY Date_From
Most likely you have to add different kinds of where clauses etc to make this fit into your needs but since I had only 1 test case data I verified the behaviour against it.
Hopefully it helps.