2016-07-14 15 views
0

SQL Serverを初めて使用しました。最初の2行の時間を比較できる方法はありますか?私のIDはユニークなので、別の時間を追加すると、クエリの値を変更せずに同じものにする必要があります。私は最後の2行の時間差を知りたいのですが、私の質問がはっきりしていない場合はごめんなさい。彼らは数字であるかのようにSQL Server時刻と行の比較

EXAMPLE TABLE

+1

期待される結果といくつかのサンプルデータを追加してください。 – TheGameiswar

+0

最後の2行の時間差が欲しいですか? –

+0

私の質問が不明な場合は申し訳ありません。 – newbiesqlserver

答えて

0

を使用し、2回の差分を取得します。それらのすべてを理解できれば、その過程で多くのSQLを学ぶでしょう。

-- scalar subqueries 
select datediff(second, max("time"), (select max("time") from T)) as difference 
from T 
where "time" < (select max("time") from T) 

-- correlated subquery 
select datediff(
      second, 
      (select t2."time" from T as t2 where t2."time" < t."time"), 
      t."time") as difference 
from T as t 
where t.id = (select max(id) from T) 

-- self outer joins 
select datediff(second, max(t2."time"), max(t."time")) as difference 
from T as t left outer join T as t2 on t2."time" < t."time" -- by time 

select datediff(second, max(t2."time"), max(t."time")) as difference 
from T as t left outer join T as t2 on t2.id = t.id - 1 -- by id 

-- cross apply 
select datediff(second, max(prev."time"), max(t."time")) as difference 
from T as t cross apply 
    (select max("time") from T as t2 where t2."time" < t."time") as prev("time") 

-- cte with case expression 
with max_time("time") as (select max("time") from T) 
select min(case when t."time" <> max_time."time" 
      then datediff(second, t."time", max_time."time") end) as difference 
from T as t cross apply max_time 

-- derived table and analytic functions 
select difference 
from (
    select 
     row_number() over (order by "time" desc) as rn, 
     datediff(second, lag("time") over (order by "time"), "time") as difference 
    from T 
) T2 
where rn = 1 
0

あなたは直接日付を比較することができます。

SELECT id FROM table WHERE time >= '2016-07-15' 

あなたはおそらく以下のソリューションのダースのバリエーションを考え出すことができるDATEDIFF

http://www.techonthenet.com/sql_server/functions/datediff.php

+0

日付リテラルを一重引用符で囲む必要があります。 ANSI準拠のyyyy-mm-ddを使用することをお勧めします。この場合、 '2016-07-05'になります。 –

+0

構文を修正したので、私はこれがどのように質問に答えるかわかりません。もちろん、私たちは本当にその質問が何であるかは分かりません。 ;) –

+0

私は彼の質問が文字通り「私は日付を比較する方法を知らない」と思っていたので、私は彼を正しい方向に向けるようにしていました。私は明確化を待っていたかもしれないと思う:p – Caius