I would try
CREATE TABLE #testprod (id INT IDENTITY(1,1), [date] DATETIME, tot_qty FLOAT)
INSERT INTO #testprod ([date], tot_qty) VALUES ( DATETIMEFROMPARTS(2016,2,12, 9,0,0,0), 100)
INSERT INTO #testprod ([date], tot_qty) VALUES ( DATETIMEFROMPARTS(2016,2,12, 11,0,0,0), 300)
INSERT INTO #testprod ([date], tot_qty) VALUES ( DATETIMEFROMPARTS(2016,2,12, 22,0,0,0), 200)
INSERT INTO #testprod ([date], tot_qty) VALUES ( DATETIMEFROMPARTS(2016,2,13, 07,59,0,0), 400)
SELECT
dateadd(day,datediff(day,0, DATEADD(hour, -8, date ) ),0) as day
, SUM(TOT_QTY)
FROM #testprod
GROUP BY
dateadd(day,datediff(day,0, DATEADD(hour, -8, date ) ),0)
the
dateadd(day,datediff(day,0, date ),0)
will group all records of different times by day
and the
DATEADD(hour, -8, date )
will 'move' the actual time of the record back by 8 hours, so that it now matches the 'normal' boundaries of a day