The best way to handle this is to store three pieces of information for each record:
ClockInDate: This is the date the user clocked in on. This should be stored separately so that later on, you can use this field in a GROUP BY clause. Formatted as a Short Date.
StartTime: This is the date and time the user clocked in. Formatted as a General Date.
FinishTime: This is the date and time the user clocked out. Formatted as a General Date.
Then, to get your minutes worked, change your Query to Totals and use the following calculated fields:
Code:
TotalTime: Sum(DateDiff("n",[StartTime],[FinishTime]))
overtimeMin: IIf(Sum(DateDiff("n",[StartTime],[FinishTime]))>480,Sum(DateDiff("n",[StartTime],[FinishTime]))-480, 0)
OverTimeHours: Format(Int(IIf(Sum(DateDiff("n",[StartTime],[FinishTime]))>480,Sum(DateDiff("n",[StartTime],[FinishTime]))-480, 0)/60), "00") & Format(IIf(Sum(DateDiff("n",[StartTime],[FinishTime]))>480,Sum(DateDiff("n",[StartTime],[FinishTime]))-480, 0) Mod 60,"\:00")
TotalMinLessOvertime: Sum(DateDiff("n",[StartTime],[FinishTime]))-IIf(Sum(DateDiff("n",[StartTime],[FinishTime]))>480,Sum(DateDiff("n",[StartTime],[FinishTime]))-480,0)
For all 4 of these fields, you will need to change the Totals column from "Group By" to "Expression".
I know the OverTimeHours field is particularly ugly, but that's a byproduct of using a Totals Query - You can no longer just use the alias, you have to re-enter the whole formula.
Check out the attached DB for an example.