使用SQL,我想报告一个人上次登录的情况

使用SQL,我想报告一个人上次登录的情况,sql,Sql,我使用下面的脚本查找用户登录和注销会话。是否可以对其进行修改以显示自2个月以来未登录的用户?我就是搞不懂这个 select A.USERNAME, P.NAME, L.LOGINSESSIONID, L.AGENTID, L.LOGINID, L.STATE, L.CREATED, L.TERMINATED, (L.TERMINATED_TS - L.CREATED_TS) AS Duration from GIDB_G_LOGIN_SESSION_V L,

我使用下面的脚本查找用户登录和注销会话。是否可以对其进行修改以显示自2个月以来未登录的用户?我就是搞不懂这个

select
    A.USERNAME, P.NAME, L.LOGINSESSIONID, L.AGENTID, L.LOGINID, L.STATE,
    L.CREATED, L.TERMINATED, (L.TERMINATED_TS - L.CREATED_TS) AS Duration  
from
    GIDB_G_LOGIN_SESSION_V L,
    GIDB_GC_AGENT A,
    GIDB_GC_PLACE P 
WHERE
    (L.CREATED >= to_date ('20/09/2016' , 'DD/MM/YYYY'))
    and
    (L.CREATED < to_date ('22/09/2016' , 'DD/MM/YYYY')) 
    AND
    (L.AGENTID = A.ID) 
    AND
    (L.PLACEID = P.ID) 
    --AND A.USERNAME IN ('13866')`
选择
A.USERNAME、P.NAME、L.LOGINSESSIONID、L.AGENTID、L.LOGINID、L.STATE、,
L.创建,L.终止,(L.终止-L.创建)作为持续时间
从…起
GIDB_G_登录_会话_V L,
GIDB_GC_代理A,
吉德布古广场P
哪里
(创建日期>=截止日期('20/09/2016','DD/MM/YYYY'))
和
(创建日期<截止日期('22/09/2016','DD/MM/YYYY'))
及
(L.AGENTID=A.ID)
及
(L.PLACEID=P.ID)
--以及('13866')中的用户名`
Oracle版本(基于现有的to_date()函数):

SQL Server:

select A.USERNAME, P.NAME, max(L.CREATED) as LAST_LOGIN
from GIDB_G_LOGIN_SESSION_V L
inner join GIDB_GC_AGENT A
  on A.ID = L.AGENTID
inner join GIDB_GC_PLACE P 
  on P.ID = L.PLACEID
left join GIDB_G_LOGIN_SESSION_V X
  on X.AGENTID = L.AGENTID
  and X.CREATED >= dateadd(mm,-2,getdate())
where X.AGENTID is null
group by A.USERNAME, P.NAME
MySQL:

select A.USERNAME, P.NAME, max(L.CREATED) as LAST_LOGIN
from GIDB_G_LOGIN_SESSION_V L
inner join GIDB_GC_AGENT A
  on A.ID = L.AGENTID
inner join GIDB_GC_PLACE P 
  on P.ID = L.PLACEID
left join GIDB_G_LOGIN_SESSION_V X
  on X.AGENTID = L.AGENTID
  and X.CREATED >= date_add(curdate(), INTERVAL -2 MONTH)
where X.AGENTID is null
group by A.USERNAME, P.NAME
Oracle版本(基于现有的to_date()函数):

SQL Server:

select A.USERNAME, P.NAME, max(L.CREATED) as LAST_LOGIN
from GIDB_G_LOGIN_SESSION_V L
inner join GIDB_GC_AGENT A
  on A.ID = L.AGENTID
inner join GIDB_GC_PLACE P 
  on P.ID = L.PLACEID
left join GIDB_G_LOGIN_SESSION_V X
  on X.AGENTID = L.AGENTID
  and X.CREATED >= dateadd(mm,-2,getdate())
where X.AGENTID is null
group by A.USERNAME, P.NAME
MySQL:

select A.USERNAME, P.NAME, max(L.CREATED) as LAST_LOGIN
from GIDB_G_LOGIN_SESSION_V L
inner join GIDB_GC_AGENT A
  on A.ID = L.AGENTID
inner join GIDB_GC_PLACE P 
  on P.ID = L.PLACEID
left join GIDB_G_LOGIN_SESSION_V X
  on X.AGENTID = L.AGENTID
  and X.CREATED >= date_add(curdate(), INTERVAL -2 MONTH)
where X.AGENTID is null
group by A.USERNAME, P.NAME

mysql或sql Server To_DATE是Oracle语法。。。OP非常混乱另外,您的连接语法在近10年前被替换。你可能想调查清楚JOINS@JohnHC . . .
TO_DATE()
也可用于Postgres(因此也可用于许多派生数据库)和Teradata。OP设法找到了两个不支持它的数据库。我删除了不兼容的数据库标记。@GordonLinoff很酷,学到了一个新东西(我从未使用过PostgreSQL)mysql或sql Server最新的是Oracle语法。。。OP非常混乱另外,您的连接语法在近10年前被替换。你可能想调查清楚JOINS@JohnHC . . .
TO_DATE()
也可用于Postgres(因此也可用于许多派生数据库)和Teradata。OP设法找到了两个不支持它的数据库。我删除了不兼容的数据库标记。@GordonLinoff很酷,学到了一个新东西(我从未使用过PostgreSQL)太棒了!非常感谢约翰霍克,它工作得很好:-)我想不出“不存在的地方”在这里已经有好几天了!非常感谢你,约翰霍克,它工作得很好:-)我已经好几天没弄清楚“哪里不存在”了