войти в систему, найти период времени между последним входом и выходом - PullRequest
0 голосов
/ 20 октября 2011

У меня есть sql-код для определения последнего входа и выхода пользователя, но вход и выход для входа определяются специальной переменной # in_out #, в любом случае вот код:

SELECT DISTINCT
                0 AS TIP,
                CP.PARTNER_ID P_ID,
                CP.COMPANY_PARTNER_NAME P_NAME,
                CP.COMPANY_PARTNER_SURNAME P_SURNAME,
                WL.PARTNER_ID W_ID,
                WL.DOMAIN_NAME DOMAIN,
                WL.IN_OUT_TIME IN_OUT_TIME,
                WL.IN_OUT IN_OUT,
                C.FULLNAME C_NAME
            FROM
                COMPANY_PARTNER CP
                LEFT OUTER JOIN WRK_LOGIN WL ON WL.PARTNER_ID = CP.PARTNER_ID 
                LEFT OUTER JOIN COMPANY C ON C.COMPANY_ID=CP.COMPANY_ID
            WHERE
                <cfif isdate(attributes.start_date)>WL.IN_OUT_TIME >= #attributes.start_date# AND</cfif>
                <cfif isdate(attributes.finish_date)>WL.IN_OUT_TIME < #dateadd('d',1,attributes.finish_date)# AND</cfif>
                <cfif len(attributes.domain_name)>WL.DOMAIN_NAME = '#attributes.domain_name#' AND</cfif>
                <cfif len(attributes.in_out)>WL.IN_OUT = #attributes.in_out# AND</cfif>
                WL.DOMAIN_NAME IS NOT NULL
            GROUP BY
                CP.PARTNER_ID,WL.PARTNER_ID,WL.IN_OUT_TIME,WL.IN_OUT,CP.COMPANY_PARTNER_NAME,CP.COMPANY_PARTNER_SURNAME,WL.DOMAIN_NAME,C.FULLNAME

и таблица:

<cfoutput query="get_wrk_login" startrow="#attributes.startrow#" maxrows="#attributes.maxrows#" group="P_ID">
                    <cfif in_out eq 1><cfset date1 = '#in_out_time#'></cfif>
                    <cfif in_out eq 0><cfset date2 = '#in_out_time#'></cfif>
                    <cfif not isdefined('date2')><cfset online_time = 30><cfelse><cfset online_time = datediff("n", date1, date2)></cfif>
                <tr height="20" onMouseOver="this.className='color-light';" onMouseOut="this.className='color-row';" class="color-row">
                    <td width="100" align="center">#dateformat(in_out_time,'dd/mm/yyyy')# #timeformat(dateadd('h',2,in_out_time),'HH:MM')#</td>
                    <td>#p_name# #p_surname# #online_time#</td>
                    <td align="center"><cfif tip eq 0>Kurumsal<cfelse>Biriyesel</cfif></td>
                    <td width="130">#left(C_NAME,20)#</td>
                    <td width="100">#domain#</td>
                    <td align="center"><cfif in_out eq 1><cf_get_lang_main no='142.Giriş'><cfelse><cf_get_lang_main no='19.Çıkış'></cfif></td>
                </tr>
                </cfoutput>

проблема в том, что я не могу установить дату1 и дату2 для последнего входа в систему и выхода из нее, потому что время определяется только один раз в цикле и называется входом или выходом журнала, если в цикле оно было определено в В то же время, время входа в систему и выхода из нее, я бы легко нашел их, но это определило один раз в цикле, я надеюсь, вы меня поняли ^. ^, но теперь я получаю результат даже минус минуты)) так что это совершенно неправильно Поэтому я прошу о помощи и благодарю всех за помощь!

1 Ответ

1 голос
/ 20 октября 2011

Как вы сказали, WL.IN_OUT - это поле BIT, поэтому может быть только 1 или 0.

Это означает, что можно определить только дату1 ИЛИ дату2. Они не могут быть определены одновременно.

В приведенном ниже коде вы говорите, что если дата2 определена, то получите разницу между датой1 и датой2. Если дата2 определена, дата1 никогда не будет определена, и наоборот.

<cfif in_out eq 1><cfset date1 = '#in_out_time#'></cfif>
<cfif in_out eq 0><cfset date2 = '#in_out_time#'></cfif>
<cfif not isdefined('date2')><cfset online_time = 30><cfelse><cfset online_time = datediff("n", date1, date2)></cfif>

Из приведенного выше запроса невозможно получить разницу между датой входа и выхода из системы, поскольку у вас есть только 1 дата, WL.IN_OUT_TIME IN_OUT_TIME, которая будет либо датой входа, либо датой выхода из системы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...