場景:生物識別設備的數據庫。它插入查找不同行中兩次之間的時間差
EmpId, EmpName, DepName, RecTime, RecDate
當用戶進入辦公室並輕掃手指,然後第二次離開辦公室時,它被插入。 RecTime保存輸入時間和退出時間。
問題:
我要計算總時間一個人的工作,但被插在第一條記錄RECTIME之間尋找差異和插入第二紀錄,分鐘和小時。
我試過DateDiff函數,DateSub等,但沒有奏效
場景:生物識別設備的數據庫。它插入查找不同行中兩次之間的時間差
EmpId, EmpName, DepName, RecTime, RecDate
當用戶進入辦公室並輕掃手指,然後第二次離開辦公室時,它被插入。 RecTime保存輸入時間和退出時間。
問題:
我要計算總時間一個人的工作,但被插在第一條記錄RECTIME之間尋找差異和插入第二紀錄,分鐘和小時。
我試過DateDiff函數,DateSub等,但沒有奏效
不會解決你的問題,因爲沒有足夠的數據來這樣做。 我會遵循的方法模式是;
CREATE TABLE #EmpLogging
(
LogID INT,
EmpId INT,
EmpName VARCHAR(50),
DepName VARCHAR(50),
RecTime TIME,
RecDate DATE
)
INSERT INTO #EmpLogging
SELECT 1, 1, 'Fred', 'Legal', '08:00:00', '2013-01-01' UNION ALL
SELECT 2, 2, 'Susan', 'Marketing', '08:03:00', '2013-01-01' UNION ALL
SELECT 3, 1, 'Fred', 'Legal', '17:00:00', '2013-01-01' UNION ALL
SELECT 4, 2, 'Susan', 'Marketing', '17:55:00', '2013-01-01'
;WITH EmpSequence AS
(
SELECT *
,EmpSeq = ROW_NUMBER() OVER (PARTITION BY EmpId ORDER BY RecDate, RecTime)
FROM #EmpLogging
)
,EndTime AS
(
SELECT E1.*
,OutTime = E2.RecTime
,OutDate = E2.RecDate
FROM EmpSequence E1
LEFT
JOIN EmpSequence E2 ON E1.EmpId = E2.EmpId
AND E1.EmpSeq = E2.EmpSeq - 1
)
SELECT *
,MINUTETimeFrame = DATEDIFF(MI, RecTime, OutTime)
FROM EndTime
不工作,給人日期只有 –
看來,當我執行它做工精細,見上面的圖片。 – MarkD
是'EmpId'在這兩種情況下,由於 – Jijo
有向下投票沒有DDL相同,現在樣本數據 – MarkD