I have a challenge where I need to add up two time expressions. In Shift1Duration and Shift2Duration the expression will return a value like 8:20 and 7:00.
There is an additional column DurationTotal that must sum these two expression so 8:20 + 7:00 would equal 15:00 or basically 15 hours. The time expresion fields are cast as a varchar not datetime .
here is the expression: The duration column expression needs to be re-written because DurationTotal should equal
ShiftDuration1 + ShiftDuration2. This is one of these problems easier said than done... any ideas how to sum them together?
There is an additional column DurationTotal that must sum these two expression so 8:20 + 7:00 would equal 15:00 or basically 15 hours. The time expresion fields are cast as a varchar not datetime .
here is the expression: The duration column expression needs to be re-written because DurationTotal should equal
ShiftDuration1 + ShiftDuration2. This is one of these problems easier said than done... any ideas how to sum them together?
Code:
Shift1Duration=Case When (DateDiff(mi,Cast(StartShift1 as DateTime),Cast(EndShift1 as DateTime))>0) Then
IsNull(Convert(Varchar(2),(Cast(DateDiff(mi,Cast(StartShift1 as DateTime),Cast(EndShift1 as DateTime))as int))/60) + ':' +
Case When Convert(Varchar(2),(Cast(DateDiff(mi,Cast(StartShift1 as DateTime),Cast(EndShift1 as DateTime))as int))%60)<10 Then '0' +
Convert(Varchar(1),(Cast(DateDiff(mi,Cast(StartShift1 as DateTime),Cast(EndShift1 as DateTime))as int))%60) Else
Convert(Varchar(2),(Cast(DateDiff(mi,Cast(StartShift1 as DateTime),Cast(EndShift1 as DateTime))as int))%60)End,'0:00')
Else '0:00' END,
Shift2Duration=Case When (DateDiff(mi,Cast(StartShift2 as DateTime),Cast(EndShift2 as DateTime))>0) Then
IsNull(Convert(Varchar(2),(Cast(DateDiff(mi,Cast(StartShift2 as DateTime),Cast(EndShift2 as DateTime))as int))/60) + ':' +
Case When Convert(Varchar(2),(Cast(DateDiff(mi,Cast(StartShift2 as DateTime),Cast(EndShift2 as DateTime))as int))%60)<10 Then '0' +
Convert(Varchar(1),(Cast(DateDiff(mi,Cast(StartShift2 as DateTime),Cast(EndShift2 as DateTime))as int))%60) Else
Convert(Varchar(2),(Cast(DateDiff(mi,Cast(StartShift2 as DateTime),Cast(EndShift2 as DateTime))as int))%60)End,'0:00')
Else '0:00' END,
DurationTotal= Case When (DateDiff(mi,Cast(StartShift1 as DateTime),Cast(EndShift1 as DateTime))>0) Then
IsNull(Convert(Varchar(2),(Cast(DateDiff(mi,Cast(StartShift1 as DateTime),Cast(EndShift1 as DateTime))as int))/60) + ':' +
Case When Convert(Varchar(2),(Cast(DateDiff(mi,Cast(StartShift1 as DateTime),Cast(EndShift1 as DateTime))as int))%60)<10 Then '0' +
Convert(Varchar(1),(Cast(DateDiff(mi,Cast(StartShift1 as DateTime),Cast(EndShift1 as DateTime))as int))%60) Else
Convert(Varchar(2),(Cast(DateDiff(mi,Cast(StartShift1 as DateTime),Cast(EndShift1 as DateTime))as int))%60)End,'0:00')
Else '0:00' END