获取日期时间差,以小时:分钟:秒表示。

3

我有一个这样的查询:

select t.Paydate,t.DelDate,DATEDIFF(MI, t.Paydate,t.DelDate) as Datdiffernce 
from Transaction_tbl t 
where t.transactID=19
我得到的输出如下所示:
Paydate                 DelDate                 Datdiffernce
----------------------- ----------------------- ------------
2013-05-07 18:36:50.000 2013-05-07 18:58:32.000     22

Datedifference 只返回了 22 分钟。

我该如何在这个格式中获取日期差异 hh:mm:ss,而不是只有分钟数?


你需要使用类似dateadd(s,datediff(s, t.paydate,t.deldate)的语句来计算日期差。请参考MSDN链接:http://msdn.microsoft.com/en-us/library/ms186819.aspx - Dev N00B
我想要以0小时22分钟00秒的格式输出,有没有什么方法可以实现? - user2535939
可能是使用T-SQL计算时间间隔的重复问题 - Sachin Shanbhag
@SachinShanbhag 在投票关闭之前请仔细阅读问题。 - fancyPants
@fancyPants - 请解释一下这个问题与我标记的可能重复问题有何不同? - Sachin Shanbhag
1
这个问题不是关于如何计算时间差,他已经通过使用timediff()得到了答案,而是关于将分钟表示为hh:mm:ss格式的问题。 - fancyPants
2个回答

5
尝试这个:
SELECT convert(varchar(10),DATEDIFF(hour,t.Paydate,t.DelDate))+'hr:' 
      +convert(varchar(10),DATEDIFF(minute,t.Paydate,t.DelDate)% 60) + 'mnts:' 
      +convert(varchar(10),DATEDIFF(SECOND,t.Paydate,t.DelDate)% 60) +'seconds'
       AS 'DIFF IN HH:MM:SS'
FROM Transaction_tbl t 
WHERE t.transactID=19  

1
如果 @startdate='2013-10-01 15:05:17' 且 @enddate='2013-10-01 15:10:16',则上述代码返回5分59秒,但实际差异是4分59秒。 - MNVR

0
Declare @starttime datetime, @endtime datetime, @seconds int

Set @starttime ='2013-10-01 15:05:17'
Set @endtime = '2013-10-01 15:10:16'

set @seconds = DateDiff(second, @starttime, @endtime)
Select Convert(varchar(10), @seconds/3600) + 'hr:'
       +Convert(varchar(10), (@seconds % 3600)/60) + 'mnts:'
       +Convert(varchar(10), (@seconds % 3600) % 60) + 'seconds'

参考资料:请点击这里


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,