场景:生物识别设备的数据库。它插入
EmpId, EmpName, DepName, RecTime, RecDate
当用户进入办公室并滑动手指然后第二次离开办公室时它会被插入。 RecTime保存输入时间然后退出时间。
问题:
我想计算一个人工作的总时间,但是在插入的第一条记录和插入的第二条记录中找到RecTime之间的差异,以分钟和小时为单位。
我尝试过DateDiff函数,DateSub等,但没有任何效果
答案 0 :(得分:0)
由于数据不足,无法解决您的问题。 我将遵循的方法模式是
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