如何获得存储为字符串的两个时间值之间的时差?

时间:2011-04-08 06:23:46

标签: sql sql-server-2008

下面是我的表字段及其值字段;数据类型是varchar。

我想要ActualTimeIn和InTime之间的时差(小时:分钟:秒)。

ActualTimeIn   InTime
09:30:00 AM    1:23:00 PM

09:30:00 AM    11:30:00 AM

09:30:00 AM    11:29:00 AM

预期输出是这样的:

LateComing

3:53:00
2:00:00
1:59:00

1 个答案:

答案 0 :(得分:3)

declare @T table(ActualTimeIn time(0), InTime time(0))

insert into @T values
('09:30:00 AM',   '1:23:00 PM'),
('09:30:00 AM',   '11:30:00 AM'),
('09:30:00 AM',   '11:29:00 AM')

select cast(dateadd(s, datediff(s, ActualTimeIn, InTime), 0) as time(0))
from @T

结果

----------------
03:53:00
02:00:00
01:59:00