sql查询,根据日期范围查找特定条目



我有一个数据库,其中有一个包含所有帐户登录时间历史记录的表。该表包括USERID和LOGIN_DATE列。我想找到那些超过60天没有登录的用户,所以SQL查询显示

查找登录日期大于60天前,但没有输入任何日期超过60天前的用户

有人能建议我怎么做吗?

以下可以是的解决方案

select USERID, min(login_date) mind, max(login_date) maxd
from Logins
group by UserId
having max(login_date) < dateadd(d,-60,getdate())

您可以使用聚合,并对最长登录日期超过60天的用户进行筛选:

select userid
from mytable
group by userid
having max(login_date) < current_date - interval '60' day

您没有告诉您使用的是哪个数据库,所以这使用了标准的日期算法。您可能需要将其适应您的实际数据库(所有主要数据库都有替代方案(。


现在这个问题被标记为Oracle。以上内容将起作用;您可能希望截断日期的时间部分,以检查整天。如果您想显示最后一次登录,只需在select子句中添加聚合函数:

select userid, max(login_date) last_login_date
from mytable
group by userid
having max(login_date) < trunc(current_date) - interval '60' day

您可以使用聚合:

select userid
from t
group by userid
having max(logindate) < trunc(sysdate) - interval '60' day;

众所周知,日期/时间函数是特定于数据库的,因此hasing子句的确切语法可能取决于您的数据库。

相关内容

  • 没有找到相关文章

最新更新