0

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

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

4

3 回答 3

2

将最后选择更改为

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

我在下面使用表而不是表变量尝试了相同的操作:

在此处输入图像描述

于 2012-04-26T07:34:25.947 回答
1
SELECT  [session_id]
      , DATEDIFF(second, [start] - [end]) as 'Duration'
FROM @Sessions

DATEDIFF (Transact-SQL)

返回指定开始日期和结束日期之间跨越的指定日期部分边界的计数(有符号整数)。

于 2012-04-26T07:34:35.487 回答
0

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

例如

SELECT DATEDIFF(ss, start, end)
FROM @Sessions
于 2012-04-26T07:33:44.137 回答