sql server - SQL Time Conversion -
i having trouble conversion of time.
i have table called 'totaltime' set int , holds time in seconds only. want convert these seconds days, hours, minutes, seconds e.g. 01d 09:26:43.
now show code using:
select [buildid],[product],[program], sum(case when [state] = 'running' cast(totaltime int) else 0 end) [running], sum(case when [state] = 'break' cast(totaltime int) else 0 end) [break] [line_log].[dbo].[line1log] group [buildid], [product], [program]
so can see grouping [state] column , display results of 'totaltime' in format mentioned above.
now have tried code not work cannot convert int varchar
select [buildid],[product],[program], sum(case when [state] = 'running' cast(floor(totaltime / 86400) varchar(10))+'d ' + convert(varchar(5), dateadd(second, totaltime, '19000101'), 8) else 0 end) [running] [line_log].[dbo].[line1log] group [buildid], [product], [program]
the above not display in exact format wanted either.
just wondering if willing me on one?
thanks taking time read :)
you should convert calculated seconds after summing , grouping:
and use varchar(8)
instead of varchar(5)
.
select [buildid],[product],[program], cast(floor([running] / 86400) varchar(10))+'d ' + convert(varchar(8), dateadd(second, [running], '19000101'), 8) [running], cast(floor([break] / 86400) varchar(10))+'d ' + convert(varchar(8), dateadd(second, [break], '19000101'), 8) [break] ( select [buildid],[product],[program], sum(case when [state] = 'running' cast(totaltime int) else 0 end) [running], sum(case when [state] = 'break' cast(totaltime int) else 0 end) [break] [line_log].[dbo].[line1log] group [buildid], [product], [program] ) t
Comments
Post a Comment