gpt4 book ai didi

sql - 将毫秒转换为天、小时、分钟和秒

转载 作者:行者123 更新时间:2023-12-04 13:30:29 30 4
gpt4 key购买 nike

我在 Microsoft SQL Server 2008R2 中有一个 bigint 字段,里面充满了滴答声(一个滴答声代表一百纳秒或百万分之一秒。一毫秒有 10,000 个滴答声。)

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

我需要将所有记录的总和转换为 Days:Hours:Minutes:Seconds:Milliseconds。

它适用于单个记录:

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 to Data Type TIME 函数...

感谢帮助,谢谢!

最佳答案

DATEADD 来说太大了只接受 int .
将其分为两部分:秒,然后是毫秒。

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

如果您的总持续时间超过 1 天,您可以使用它来分别获取天数和 hr:min:sec:ms。如果你真的想要文本形式的结果,这是一个强制转换和字符串连接的问题。
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

关于sql - 将毫秒转换为天、小时、分钟和秒,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12757811/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com