You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用SQL的CONVERT()函数获取HH:MM:SS.nnn格式的时间?

解决方案:自定义时间差格式为HH:MM:SS.nnn

SQL Server没有直接返回HH:MM:SS.nnn格式的内置转换代码(格式114返回的是HH:MM:SS:nnn),可以通过以下两种方式实现需求:

方法1:替换格式114的毫秒分隔符

利用格式114先获取带毫秒的时间字符串,再把秒和毫秒之间的冒号替换为英文句点:

REPLACE(
    CONVERT(NVARCHAR(16), DATEADD(MILLISECOND, ISNULL(DATEDIFF(MILLISECOND, T.IssueDatetime, T.CalledDateTime), 0), 0), 114),
    ':', '.', 2
)

这里指定替换第2个冒号(前两个冒号是时分、分秒的分隔符),能精准定位到秒与毫秒之间的分隔符,避免误替换。

方法2:拆分时间部分拼接(更稳妥)

分别提取时分秒部分和毫秒部分,再用英文句点拼接,避免字符串替换可能带来的歧义:

CONCAT(
    -- 获取HH:MM:SS部分
    CONVERT(NVARCHAR(8), DATEADD(MILLISECOND, ISNULL(DATEDIFF(MILLISECOND, T.IssueDatetime, T.CalledDateTime), 0), 0), 108),
    '.',
    -- 获取3位毫秒(补前导零确保格式统一)
    RIGHT('000' + CAST(ISNULL(DATEDIFF(MILLISECOND, T.IssueDatetime, T.CalledDateTime), 0) % 1000 AS NVARCHAR(3)), 3)
)

解释:通过取时间差毫秒数的余数,得到0-999的毫秒值,再用RIGHT('000' + ..., 3)确保始终显示3位数字(如5毫秒会显示为005)。

内容的提问来源于stack exchange,提问作者Amir Shouqqie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 15:29:55