This isn't a question with a single answer, it's closely related to what the company actually does as part of its procedures. If it counts a "day" as Shift 1 start to Shift 1 start (and some do) then it's a different problem to if it counts a day as midnight to midnight, because the basis for all records changes.
I would probably record all information as "ItemID, StaffId, DateTimeSale, Value" and work on reporting as a separate issue: getting info for a shift is a case of checking for a shift start time, plus a shift length.
So if you were using SQL:
SELECT * FROM myTable WHERE StaffId=1234 AND DateTimeSale BETWEEN '2013-06-15 23:00:00' AND DATEADD(hh, 8, '2013-06-15 23:00:00')