Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 登录日志,查找上次登录和注销之间的时间段_Sql Server_Coldfusion - Fatal编程技术网

Sql server 登录日志,查找上次登录和注销之间的时间段

Sql server 登录日志,查找上次登录和注销之间的时间段,sql-server,coldfusion,Sql Server,Coldfusion,我有一个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,

我有一个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>
问题是我不能将date1和date2设置为最后一次登录和注销,因为时间在循环中只定义了一次,并称为登录或注销日志,如果在循环中它是在登录和注销时间的同一时间定义的,我会很容易地使用datediff em,但它在循环中定义了一次,我希望你能理解我的意思^。^但是现在我得到的结果甚至是零下几分钟,所以它是错误的,因此我请求帮助,谢谢大家的帮助

正如您所说,WL.IN_OUT是一个位字段,因此只能是1或0

这意味着只能定义date1或date2。它们不能同时定义

您在下面的代码中所说的是,如果定义了date2,那么就得到date1和date2之间的差异。如果定义了date2,则永远不会定义date1,反之亦然

<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>

从您上面提供的查询中,无法获得登录和注销日期之间的差异,因为您只有一个日期WL.IN\U OUT\U TIME IN\U OUT\U TIME,这将是登录或注销日期。

WL.IN\U OUT是位字段吗?如果是,那么它代表什么?Barry,它定义了它是登录还是注销,如果in_out是1,那么所有数据和日期都是用于登录的,但是如果它是0,那么它意味着所有数据都是用于注销的你的问题有点混乱。看看查询数据的样本会有帮助。所以你们说这个问题并没有答案?我的意思是不可能计算登录和退出之间的差异?!据我所知,使用您提供的查询是不可能的。您是否将登录和注销日期存储在单独的字段中?从查询中看,您似乎只有1个日期,表示最后一次登录或注销日期。但对于另一个循环,注销inf.正好在登录inf之后,实际上有关于登录和注销的inf,只是循环不同。您是说还有另一个用于注销的循环和/或查询吗?你能发布更多信息吗?我的意思是,有没有办法定义,例如,如果登录的id与注销的id相同,然后设置日期?!