在SQL Server中返回指定格式的两个时间的时间差

源于博问中的一个提问

我的数据库A,想返回两个时间的时间差,两个时间的格式如下:
a b
11:00:00 12:20:11
然后我想返回的格式是
c
1:20:11

我用datediff,但出不了我的结果,格式都不是那样的,请问该怎么写?

我的回答:

 
  
SELECT CAST ( DATEDIFF (HH, ' 11:00:00 ' , ' 12:20:11 ' ) AS VARCHAR )
+ ' : ' +
CAST (( DATEDIFF (MI, ' 11:00:00 ' , ' 12:20:11 ' ) % 60 ) AS VARCHAR )
+ ' : ' +
CAST (( DATEDIFF (SS, ' 11:00:00 ' , ' 12:20:11 ' ) % 60 ) AS VARCHAR )

如果返回格式要求是01:20:11,则代码如下:

 
  
SELECT RIGHT ( ' 0 ' + CAST ( DATEDIFF (HH, ' 11:00:00 ' , ' 12:20:11 ' ) AS VARCHAR ), 2 )
+ ' : ' +
RIGHT ( ' 0 ' + CAST (( DATEDIFF (MI, ' 11:00:00 ' , ' 12:20:11 ' ) % 60 ) AS VARCHAR ), 2 )
+ ' : ' +
RIGHT ( ' 0 ' + CAST (( DATEDIFF (SS, ' 11:00:00 ' , ' 12:20:11 ' ) % 60 ) AS VARCHAR ), 2 )

答案参考自:how to display hh:mm format using DateDiff() function

感谢沐枫提供的更简单的解决方案:

 
  
select convert ( varchar , convert ( datetime , datediff (SS, ' 11:00:00 ' , ' 12:20:11 ' ) / convert ( decimal , 86400 )), 8 )
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值