2012-04-26 100 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邊界的計數(有符號整數)。