如何将日期时间间隔设为秒(int)?

时间:2012-04-26 07:30:50

标签: tsql datetime intervals

我有一个包含一些日期时间列的表,现在我想以秒为单位获取两列之间的时间跨度/间隔(作为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?

3 个答案:

答案 0 :(得分:2)

将上次选择更改为

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

我在下面使用table而不是table变量尝试了相同的内容:

enter image description here

答案 1 :(得分:1)

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

DATEDIFF (Transact-SQL)

返回指定的startdate和enddate之间交叉的指定日期部分边界的计数(有符号整数)。

答案 2 :(得分:0)

使用DATEDIFF,您可以将两个日期之间的差异缩小到您想要的任何分辨率

e.g。

SELECT DATEDIFF(ss, start, end)
FROM @Sessions