Try this one. You may convert it to minutes as well. Currenty it shows in hours -
SELECT RTRIM(A.USERID) AS UserID ,
RTRIM(B.USERNAME) AS UserName ,
RTRIM(C.INTERID) AS CompanyDatabase ,
RTRIM(C.CMPNYNAM) AS CompanyName ,
LOGINDAT AS LoginDate ,
CONVERT(VARCHAR(1000), DATEPART(HH, LOGINTIM)) + ':'
+ CONVERT(VARCHAR(1000), DATEPART(MI, LOGINTIM)) AS LoginTime ,
ISNULL(CONVERT(VARCHAR(1000),E.last_batch),'') AS SQL_LastBatch ,
CASE WHEN D.session_id IS NULL
THEN 'Corrupted Missing DEX_SESSION'
ELSE CONVERT(VARCHAR(1000),session_id)
END DEX_SESSION ,
CASE WHEN CONVERT(VARCHAR(1000),E.SPID) IS NULL
THEN 'Corrupted SQL_SESSION'
ELSE CONVERT(VARCHAR(1000),SPID)
END SQL_SESSION ,
CASE WHEN DATEDIFF(mi, E.last_batch, GETDATE()) > 1
THEN DATEDIFF(hh, E.last_batch, GETDATE())
ELSE 0
END AS 'IdleTime - InHours' ,
CASE WHEN DATEDIFF(MI, LOGINDAT + LOGINTIM, GETDATE()) > 1
THEN DATEDIFF(HH, LOGINDAT + LOGINTIM, GETDATE())
ELSE 0
END AS 'Logged in for – InHours'
FROM DYNAMICS..ACTIVITY A
LEFT JOIN DYNAMICS..SY01400 B ON A.USERID = B.USERID
LEFT JOIN DYNAMICS..SY01500 C ON A.CMPNYNAM = C.CMPNYNAM
LEFT JOIN tempdb..DEX_SESSION D ON A.SQLSESID = D.session_id
LEFT JOIN master..sysprocesses E ON D.sqlsvr_spid = E.spid
AND ecid = 0
LEFT JOIN master..sysdatabases F ON E.dbid = F.dbid