转换、平均和投射后删除毫秒
Remove milliseconds after converting, avg and casting
好的。经过研究、研究和更多的研究,我已经走到这一步了,我在最后一步需要帮助。
SELECT Cast(DateAdd( ss,AVG(DateDiff( ss, '00:00:00', (A.ReceivedWhen - A.CallStartWhen))), '00:00:00' ) as time) as 'avg duration'
我得到了我的 ReceivedWhen 和 CallStartWhen 之间的区别,对其求平均并分组。没问题。
我的 'avg duration' 是正确的,只是它包含了毫秒数
00:01:43.0000000
如何删除我的毫秒数?
表达式的类型是time
,它本身没有格式。由客户来格式化它以供显示。所以答案可能是,你应该在你的客户端处理它。
但是 time
可以选择指定小数秒刻度。如果省略,默认值为 7
-- 100ns。如果您不想要任何小数秒,您可以使用 0
。
...
Cast(DateAdd( ss,AVG(DateDiff( ss, '00:00:00', (A.ReceivedWhen - A.CallStartWhen))), '00:00:00' ) as time(0)) as 'avg duration'
...
您可能还希望将其转换为 varchar
并对其应用样式。使用 convert()
to do so. From the descriptions in the section "Date and Time Styles", 8
-- "hh:mi:ss" -- 似乎是你想要的。
...
convert(varchar, Cast(DateAdd( ss,AVG(DateDiff( ss, '00:00:00', (A.ReceivedWhen - A.CallStartWhen))), '00:00:00' ) as time), 8) as 'avg duration'
...
好的。经过研究、研究和更多的研究,我已经走到这一步了,我在最后一步需要帮助。
SELECT Cast(DateAdd( ss,AVG(DateDiff( ss, '00:00:00', (A.ReceivedWhen - A.CallStartWhen))), '00:00:00' ) as time) as 'avg duration'
我得到了我的 ReceivedWhen 和 CallStartWhen 之间的区别,对其求平均并分组。没问题。
我的 'avg duration' 是正确的,只是它包含了毫秒数
00:01:43.0000000
如何删除我的毫秒数?
表达式的类型是time
,它本身没有格式。由客户来格式化它以供显示。所以答案可能是,你应该在你的客户端处理它。
但是 time
可以选择指定小数秒刻度。如果省略,默认值为 7
-- 100ns。如果您不想要任何小数秒,您可以使用 0
。
...
Cast(DateAdd( ss,AVG(DateDiff( ss, '00:00:00', (A.ReceivedWhen - A.CallStartWhen))), '00:00:00' ) as time(0)) as 'avg duration'
...
您可能还希望将其转换为 varchar
并对其应用样式。使用 convert()
to do so. From the descriptions in the section "Date and Time Styles", 8
-- "hh:mi:ss" -- 似乎是你想要的。
...
convert(varchar, Cast(DateAdd( ss,AVG(DateDiff( ss, '00:00:00', (A.ReceivedWhen - A.CallStartWhen))), '00:00:00' ) as time), 8) as 'avg duration'
...