2013-01-04 68 views
0

我想在SQL Server中添加時間。我在數據庫中有一個名爲checktime的列,它是一個datetime數據類型。我想添加從列checktime的時間。我怎樣才能做到這一點 ??在SQL Server 2008中添加時間

我正在做這個計算來計算一個員工在指定的一天中工作的總時數。

我的數據庫看起來像這樣..我想從checktime增加時間,其中checktype = 1checktype = 2然後減去結果。 (checktype = 1表示檢入並且checktype = 2表示檢出)

我該怎麼做?

Id  EmpId    CheckTime        CheckType 
--------------------------------------------------------------------------------- 
    3   5    2013-01-03 09:00:15.000       1 
    4   5    2013-01-03 11:00:00.000       2 
    5   5    2013-01-03 11:30:00.000       1 
    6   5    2013-01-03 13:00:00.000       2 
    7   5    2013-01-03 13:30:00.000       1 
    8   5    2013-01-03 16:00:00.000       2 
    9   5    2013-01-03 16:30:00.000       1 
10   5    2013-01-03 18:00:00.000       2 
+0

你能在此解釋一下?我不明白你想添加到檢查時間。 –

+0

添加時間是什麼意思? – Walter

+0

我想要checktype的總數與checktype = 1 ...(09:00:15.000 +11:30:00.000 +13:30:00.000 + 16:30:00.000) –

回答

1

這是我會做什麼,如果我理解你的問題正確:

SELECT 
    EmpId, 
    CheckTime, 
    CheckType, 
    ROW_NUMBER() OVER(PARTITION BY EmpId, DATEADD(dd,DATEDIFF(dd,0,cin.CheckTime),0), CheckType ORDER BY CheckTime) AS Seq 
INTO 
    #PreparedTable 
FROM 
    SourceTable 


SELECT 
    cin.EmpId, 
    DATEADD(dd,DATEDIFF(dd,0,cin.CheckTime),0) AS CheckDate, 
    (SUM(DATEDIFF(ss,cin.CheckTime,cout.CheckTime))/3600.0) AS HoursWorked 
FROM 
    #PreparedTable cin 
JOIN 
    #PreparedTable cout 
    ON (cin.EmpId = cout.EmpID) 
    AND (DATEDIFF(dd,cin.CheckTime,cout.CheckTime) = 0) 
    AND (cin.Seq = cout.Seq) 
    AND (cin.CheckType = 1) 
    AND (cout.CheckType = 2)