为了账号安全,请及时绑定邮箱和手机立即绑定

两个日期之间的SQL时间差导致hh:mm:ss

两个日期之间的SQL时间差导致hh:mm:ss

慕码人8056858 2019-12-04 10:04:44
我在计算两个日期之间的时差时遇到了一些困难。我想要的是,我有两个约会要说@StartDate = '10/01/2012 08:40:18.000'@EndDate='10/04/2012 09:52:48.000'因此,两个日期之间的差值hh:mm:ss为72:42:30。如何在T-SQL查询中获得此结果?
查看完整描述

2 回答

?
眼眸繁星

TA贡献1873条经验 获得超9个赞

declare @StartDate datetime, @EndDate datetime


select @StartDate = '10/01/2012 08:40:18.000',@EndDate='10/04/2012 09:52:48.000'


select convert(varchar(5),DateDiff(s, @startDate, @EndDate)/3600)+':'+convert(varchar(5),DateDiff(s, @startDate, @EndDate)%3600/60)+':'+convert(varchar(5),(DateDiff(s, @startDate, @EndDate)%60)) as [hh:mm:ss]

该查询将对您有所帮助。


查看完整回答
反对 回复 2019-12-04
?
九州编程

TA贡献1785条经验 获得超4个赞

虽然可能不是最有效的,但这可以工作:


declare @StartDate datetime, @EndDate datetime


select @StartDate = '10/01/2012 08:40:18.000',@EndDate='10/04/2012 09:52:48.000'


select convert(varchar(5),DateDiff(s, @startDate, @EndDate)/3600)+':'+convert(varchar(5),DateDiff(s, @startDate, @EndDate)%3600/60)+':'+convert(varchar(5),(DateDiff(s, @startDate, @EndDate)%60))

如果您可以运行两个选择,那会更好,因为您只执行一次datediff:


declare @StartDate datetime, @EndDate datetime


select @StartDate = '10/01/2012 08:40:18.000',@EndDate='10/04/2012 09:52:48.000'

declare @Sec BIGINT


select @Sec = DateDiff(s, @startDate, @EndDate)


select convert(varchar(5),@sec/3600)+':'+convert(varchar(5),@sec%3600/60)+':'+convert(varchar(5),(@sec%60))


查看完整回答
反对 回复 2019-12-04
  • 2 回答
  • 0 关注
  • 672 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信