2012-11-15 40 views
0

我有一個「檢測到的存在」表與日期時間夫婦和「預期存在」表與日期時間夫婦... 我想知道我什麼時候預期的存在,但沒有...我認爲這是與日期時間(在tsql除操作數)設置差異,但我不知道如何解決與SQL。Tsql日期時間設置除了操作

一個例子,如果我不清楚:

CREATE TABLE [dbo].[DetectedPresence](
     [entrance] [datetime] NULL, 
     [exit] [datetime] NULL 
    ) 

    CREATE TABLE [dbo].[ExpectedPresence](
     [entrance] [datetime] NULL, 
     [exit] [datetime] NULL 
    ) 

INSERT INTO ExpectedPresence VALUES ('2012-11-16 08.15','2012-11-16 12.00') 
INSERT INTO ExpectedPresence VALUES ('2012-11-16 17.00','2012-11-16 18.00') 
INSERT INTO DetectedPresence VALUES ('2012-11-16 08.00','2012-11-16 12.00') 
INSERT INTO DetectedPresence VALUES ('2012-11-16 15.00','2012-11-16 18.00') 

ExpectedPresence值:

entrance    exit 
2012-11-16 08.00  2012-11-16 12.00 
2012-11-16 15.00  2012-11-16 18.00 

DetectedPresence值:

entrance    exit 
2012-11-16 08.15  2012-11-16 12.00 
2012-11-16 15.00  2012-11-16 17.00 

我想有的日期時間組差(間隙) :

2012-11-16 08.00  2012-11-16 08.15 
2012-11-16 17.00  2012-11-16 18.00 

你能幫助我嗎?謝謝。

+0

你顯示的值的行不'datetime'值,因此目前還不清楚是什麼你真的問。我建議你發佈一個小的,自包含的例子,包括建立一些測試數據所需的'CREATE TABLE'和'INSERT'語句,以及你期望得到的結果。 – Pondlife

+0

我編輯我的問題,謝謝。 – Tobia

回答

0

東西沿着

case when detectedStart > expectedStart then 
    expectedStart + '-' + detectedStart 
else null end as startDiff, 
case when detectedEnd < expectedEnd then 
    detectedEnd + '-' + expectedEnd 
else null end as endDiff 

insert into difference (expectedStart, detectedStart) 
    Select 
     expectedStart,detectedStart 
    from 
     ExpectedPresence e inner join 
     DetectedPresence d on 
     e.staffID = d.staffID 
    where 
     detectedStart > expectedStart; 

    insert into difference (expectedEnd, detectedEnd) 
    Select 
     expectedEnd,detectedEnd 
    from 
     ExpectedPresence e inner join 
     DetectedPresence d on 
     e.staffID = d.staffID 
    where 
     detectedEnd < expectedEnd 
+0

我不確定這是否是解決方案...我需要日期時間差距表作爲結果。 – Tobia