0

いくつかの日時列を含むテーブルがあり、2 つの列の間のタイムスパン/間隔を秒単位で取得したい (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ドキュメントに深く隠されていますが、まだ見つけていません。では、これらの時間間隔を秒単位で int として取得するにはどうすればよいでしょうか?

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を使用すると、2 つの日付の差を必要な解像度まで取得できます。

例えば

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