sql如何使用自动计时

时间:2014-06-16 16:06:03

标签: sql sql-server

我是MSSQL的新手并且每天都在学习更多知识,我有一个网站使用了一个名为“LoginTime'这是一个INT,每当用户登录该字段时,该特定用户的+1增加+1。我现在要做的是让该字段在每个月的第一天自动从0开始。通过这种方式,我可以获得每个月末用户在一个月内登录的平均次数。我应该考虑什么才能让我的SQL服务器执行此操作...触发器,存储过程等。

2 个答案:

答案 0 :(得分:1)

不是在表上维护计数器,而是为每次成功登录添加新记录。抛出一个查询,按用户按月汇总用户的登录尝试...示例如下:

DECLARE @LoginTable TABLE
(
    UserName    VARCHAR(50),
    LoginTime   DATETIME
)

INSERT INTO @LoginTable VALUES ('user1', '2014-01-01')
INSERT INTO @LoginTable VALUES ('user1', '2014-01-02')
INSERT INTO @LoginTable VALUES ('user1', '2014-01-08')
INSERT INTO @LoginTable VALUES ('user1', '2014-02-01')
INSERT INTO @LoginTable VALUES ('user1',' 2014-02-16')
INSERT INTO @LoginTable VALUES ('user2', '2014-01-07')
INSERT INTO @LoginTable VALUES ('user2', '2014-01-09')
INSERT INTO @LoginTable VALUES ('user2', '2014-02-24')
INSERT INTO @LoginTable VALUES ('user2',' 2014-02-26')

SELECT UserName, LEFT(CONVERT(VARCHAR, LoginTime, 120), 7) AS [Year-Month], COUNT(Logintime) AS Logins
FROM @LoginTable
GROUP BY UserName, LEFT(CONVERT(VARCHAR, LoginTime, 120), 7)

答案 1 :(得分:0)

第1步 - 从表中删除列

步骤2 - 如果您还没有,请添加一个表来存储登录。它的字段应该是userId以及登录的日期和时间。

通过这种方式,您可以查看用户在任何日期范围内登录的频率。

相关问题