2012-04-26 54 views
0

我有一个包含一些datetime列一个表,现在我想在几秒钟内两列之间的时间跨度/间隔(如INT):如何获取日期时间间隔秒(int)?

declare @Sessions TABLE 
(
    [session_id] [int] not null, 
    [start] [datetime] not null, 
    [end] [datetime] not null 
) 
insert into @Sessions([session_id], [start], [end]) 
values (1, '01.04.2012 08:15:05', '01.04.2012 08:16:40'); 

select [session_id], [end]-[start] as 'duration' 
from @Sessions 

我得到的是像间隔类型日期时间:例如。 1900-01-01 00:01:35.000。 我想要的是以秒为单位的时间跨度:例如。 95S。

解析字符串不应该是一个选项,因为我认为有一个易于使用的功能 - 深深隐藏在msdn文档中,我还没有找到。 那么,如何将这些时间间隔作为int在几秒钟内?

回答

2

更改最后一个选择是

select [session_id],datediff(ss,[start],[end]) as 'duration' from @Sessions 

我曾尝试使用以下表而不是表变量相同:

enter image description here

+0

我也使用表格,但将其作为变量发布以提供最小工作示例(MWE)。 – mbx 2012-04-26 08:08:18

+0

@mbx :)我已经在检查我是否错过了你的程序 – Milee 2012-04-26 08:25:34

0

使用DATEDIFF,你可以得到2个日期之间的差值缩小到你想要

例如分辨率为准

SELECT DATEDIFF(ss, start, end) 
FROM @Sessions 
1
SELECT [session_id] 
     , DATEDIFF(second, [start] - [end]) as 'Duration' 
FROM @Sessions 

DATEDIFF (Transact-SQL)

返回指定的startdate和enddate之间指定的datepart边界的计数(有符号整数)。