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

如何去除DATEDIFF计算小时差结果的末尾零值?

解决SQL Server中时长计算结果去末尾零的问题

嘿,我明白你的需求——现在算出的小时差带着一堆多余的末尾零,看着确实不爽,我来给你几个靠谱的解决办法:

方法1:用STR()函数格式化

STR()函数可以帮你指定数字的总长度和小数位数,而且会自动去掉末尾的零,非常适合你的场景:

SELECT STR(DATEDIFF(minute, startDateTime, endDateTime) / 60.0, 10, 1) AS CalculatedDate 
FROM [dbo].[ATable]
  • 参数10是结果的总长度(包含整数、小数点和小数部分),如果你的时长差整数部分可能更长,可以调大这个数值;
  • 参数1是保留的小数位数,刚好匹配你想要的X.X格式。

方法2:用FORMAT()函数实现更灵活的格式

如果你希望整数时长(比如刚好10小时)显示成10而不是10.0,那FORMAT()函数更合适,它支持自定义格式字符串:

SELECT FORMAT(DATEDIFF(minute, startDateTime, endDateTime) / 60.0, '#.#') AS CalculatedDate 
FROM [dbo].[ATable]

这里的#.#表示:整数部分显示所有有效数字,小数部分最多保留1位,没有小数的话就自动去掉小数点和零。

为什么之前的ROUND/CAST没生效?

你之前尝试的ROUND其实只是做四舍五入操作,不会去掉末尾的零;而CAST如果只指定DECIMAL(10,1),虽然会保留一位小数,但整数时长会显示成10.0,不符合你要的纯整数格式。上面的两个方法刚好能补上这个缺口~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 08:10:43