转换毫秒到天,小时,分钟和秒(Converting Milliseconds to Days, ho

2019-09-23 15:14发布

我拥有一个充满蜱(单打勾代表一个几百纳秒或第二的千万分之一。有10000个蜱毫秒)。在Microsoft SQL Server 2008R2一个BIGINT场

http://msdn.microsoft.com/en-us/library/system.datetime.ticks.aspx

和我需要的所有记录的总和转换为天:小时:分钟:秒:毫秒。

它适用于单条记录:

SELECT CONVERT(TIME, DATEADD(ms, duration/10000, 0)) FROM tblMediaFileProperties WHERE FileId = '6C0A849D-95B4-4755-A923-B9DD8F1AF23E'

但如果和它所有记录使用:

SELECT CONVERT(TIME, DATEADD(ms, SUM(duration/10000), 0)) FROM tblMediaFileProperties 

我得到一个:

算术溢出错误将表达式转换为数据类型int。

我知道溢出来自CONVERT数据类型TIME功能...

帮助的感谢,谢谢!

Answer 1:

这是太大DATEADD只接受一个int
打破它分为两个部分:秒钟,然后毫秒。

SELECT CONVERT(TIME,
          DATEADD(ms, SUM(duration/10000 % 1000),
          DATEADD(ss, SUM(duration/10000000), 0)))
FROM tblMediaFileProperties 

单独MS:如果你的总持续时间必须高于1天,你可以用它来获得天,小时:分:秒。 这是演员和字符串连接的问题,如果你真的想要的结果以文本形式。

declare @duration bigint
set @duration = 1230000000
SELECT @duration/10000/1000/60/60/24 DAYS,
       CONVERT(TIME,
          DATEADD(ms, SUM(@duration/10000 % 1000),
          DATEADD(ss, SUM(@duration/10000000), 0))) HR_MIN_SEC


文章来源: Converting Milliseconds to Days, hours, minutes and seconds