(см. Мои заметки выше, пожалуйста.)
Для данных, которые у вас будут, однако, путем объединения последовательных пар входа в систему / выхода из системы, вы можете обработать данные, чтобы получить необходимую информацию простоиспользуя простую функцию dateDiff ([datepart], [date 1], [date 2]) в CF, чтобы выяснить разницу, если вы уже запросили данные.
Для обработки данных я бы предложил добавить еще одну строку в вашу таблицу - ту, которая обрабатывает идентификатор сеанса.Это обеспечит правильное сопряжение вашего времени входа / выхода.Затем вы можете настроить свои запросы примерно так:
<cfquery name="getSession" datasource="[dsn]">
SELECT DISTINCT sessionID
FROM logTable
WHERE userID = <cfqueryparam cfsqltype="cf_sql_integer" value="[inputted userID]" />
</cfquery>
... затем, чтобы получить время входа в систему для отдельных сеансов входа в систему, запустите такой цикл, чтобы вывести их ...
<cfoutput query="getSessions">
<cfquery name="getSessionInfo" datasource="[dsn]">
SELECT
(SELECT time
FROM logTable
WHERE sessionID = <cfqueryparam cfsqltype="cf_sql_varchar" value="#getSessions.sessionID# />
AND logType = <cfqueryparam cfsqltype="cf_sql_varchar" value="login" />)
AS loginTime,
(SELECT time
FROM logTable
WHERE sessionID = <cfqueryparam cfsqltype="cf_sql_varchar" value="#getSessions.sessionID# />
AND logType = <cfqueryparam cfsqltype="cf_sql_varchar" value="logout" />)
AS logoutTime
FROM logTable
</cfquery>
[ancillary output - use your DateDiff here with getSessionInfo.loginTime and getSessionInfo.logoutTime as your two date/times and use the data as you need]
</cfoutput>
Мой SQL в этом вопросе может быть немного неправильным, но, по крайней мере, он указывает вам правильное направление ... Надеюсь, это поможет ... не стесняйтесь связаться со мной из списка для получения дополнительных объяснений.