场景:生物识别设备的数据库。它插入查找不同行中两次之间的时间差
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