DateDiff 显示分钟和秒

DateDiff to show Minutes and Seconds

我需要计算差异并让我的答案显示分钟和秒。这是示例

Declare @clockin datetime, @clockout datetime, @total decimal(18,4)
Set @clockin = '2015-01-03 08:15:19.000'
Set @clockout = '2015-01-03 12:02:42.000'

Set @total = DateDiff(minute, @clockin, @clockout)

但是这个 returns 一个整数我也需要它来显示秒数。

希望这个方法可以帮到你,这个方法的解决方法很简单,我们就是得到中间的秒数,然后用模运算符简单的除以秒计算分。

Declare @clockin datetime, @clockout datetime, @totalSeconds int
Set @clockin = '2015-01-03 08:15:19.000'
Set @clockout = '2015-01-03 12:02:42.000'

Select @totalSeconds = Cast((@clockout - @clockin) as Float) * 24.0 * 60 *60

Select @totalSeconds /60 as [Minutes], @totalSeconds % 60 as [Seconds]

如果你想扩展你的方法,只需稍微改变一下计算秒和分钟的差异,然后按照上面的方法来分隔分钟和秒,它看起来像这样:

Declare @clockin datetime, @clockout datetime, @total int
Set @clockin = '2015-01-03 08:15:19.000'
Set @clockout = '2015-01-03 12:02:42.000'

Set @total = DateDiff(second, @clockin, @clockout)
Select @total/60 as [Minutes], @total % 60 as [Seconds]

结果:

分钟:227,秒:23

随心所欲地玩这个,如果你只将鼠标悬停在 returns 和 int

上,真正的问题是 DATEDIFF
Declare @clockin datetime, @clockout datetime, @total datetime
declare @realtotal decimal(18,4)
Set @clockin = '2015-01-03 08:15:19.000'
Set @clockout = '2015-01-03 12:02:42.000'


select @total =  dateadd(ss, DATEDIFF(ss, @clockin, @clockout), cast(0 as DateTime))
select @total
select @realtotal =  datepart(hour,@total)*60 + datepart(minute,@total) + (datepart(second,@total)*.01)
select @realtotal