我在 Microsoft SQL Server 2008R2 中有一个 bigint 字段,里面充满了刻度(单个刻度代表一百纳秒或百万分之一秒。一毫秒有 10,000 个刻度。)
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
i get a:
将表达式转换为数据类型 int 时出现算术溢出错误。
我知道溢出来自 CONVERT to Data Type TIME Function...
感谢帮助,谢谢!
它太大了DATEADD它只接受一个int
.
将其分为两部分:秒,然后毫秒。
SELECT CONVERT(TIME,
DATEADD(ms, SUM(duration/10000 % 1000),
DATEADD(ss, SUM(duration/10000000), 0)))
FROM tblMediaFileProperties
如果您的总持续时间超过 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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)