0
나는 활동 보고서를 작성하려고하는 SQL에 초보자입니다. 프로 시저와 트리거를 로그인 및 로그 아웃 날짜/시간을 기록하기위한 테이블에 저장했습니다. 시간을 계산하는 방법에 대한 몇 가지 조언을 먼저 로그에서 근무 후 SQL 시간 매개 변수 계산
난에서 하루에 로그 아웃 지속 할 수 있는가?모든 안내에 감사드립니다.
나는 활동 보고서를 작성하려고하는 SQL에 초보자입니다. 프로 시저와 트리거를 로그인 및 로그 아웃 날짜/시간을 기록하기위한 테이블에 저장했습니다. 시간을 계산하는 방법에 대한 몇 가지 조언을 먼저 로그에서 근무 후 SQL 시간 매개 변수 계산
난에서 하루에 로그 아웃 지속 할 수 있는가?모든 안내에 감사드립니다.
SELECT A.*,
DATEDIFF(second,B.firstloginonthatday,B.lastlogoutonthatday) AS time_elapsed
FROM YourTable A
INNER JOIN
( SELECT Z.USERID,
CONVERT(DATE,Z.DATE_TIME) AS ONLYDATE,
MIN(Z.DATE_TIME) AS firstloginonthatday,
MAX(Z.DATE_TIME) AS lastlogoutonthatday
FROM
(
SELECT *,
ROW_NUMBER()
OVER
(PARTITION BY USERID,CONVERT(DATE,DATE_TIME) ORDER BY CASE WHEN action = 'logout' THEN DATE_TIME
ELSE NULL END
) AS lastlogout_rn,
ROW_NUMBER()
OVER
(PARTITION BY USERID,CONVERT(DATE,DATE_TIME) ORDER BY CASE WHEN action = 'login' THEN DATE_TIME
ELSE NULL END
) AS firstlogin_rn
FROM Yourtable
) Z
WHERE Z.lastlogout_rn = 1 OR Z.firstlogin_rn = 1
GROUP BY Z.USERID,CONVERT(DATE,Z.DATE_TIME)
) B
ON A.USERID = B.USERID
AND CONVERT(DATE,A.DATE_TIME) = B.ONLYDATE;
안녕하세요, 코드를 보내 주셔서 감사합니다. 어떤 이유로 20170418에 대한 시간 계산이 올바르지 않습니다. 20170419에 대해 올바른 여러 로그인 및 로그 아웃으로 인한 것일 수 있습니다. –
우리는이 SQL 데이터베이스를 사용하고 있으며, 현재 사용중인 코드를 공유하고, 지금까지 시도한 것을 설명 할 수 있다면이 커뮤니티에서 최상의 도움을 얻으실 수 있습니다. –
SQL 2008 R2를 사용하고 있습니다 –
[T-SQL 스크립트가 여러 행 사이의 시간차를 계산할 수 있습니다] 가능한 복제본 (http://stackoverflow.com/questions/24518781/t-sql-script-to-calculate-time-difference - between-rows-rows) –