转换,平均和转换后删除毫秒

问题描述 投票:0回答:1

好。经过研究,研究和更多的研究,我已经做到了这一点,我在最后一步需要帮助。

SELECT Cast(DateAdd( ss,AVG(DateDiff( ss, '00:00:00', (A.ReceivedWhen - A.CallStartWhen))), '00:00:00' )  as time) as 'avg duration' 

我已经得到了我的ReceivedWhen和CallStartWhen之间的区别,平均它和Grouped它。没问题。

我的'平均持续时间'是正确的,除了它包含毫秒

00:01:43.0000000

如何删除我的毫秒?

sql sql-server sql-server-2017
1个回答
3
投票

表达式的类型是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()这样做。根据"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'
...
© www.soinside.com 2019 - 2024. All rights reserved.