作者:akun | 来源:互联网 | 2022-12-21 08:06
当有人登录他的帐户时,我在存储过程中有以下行:
UPDATE AcccountsTable SET LogDate = getdate() WHERE AccID = @identity
但是,我想在每个连续登录日添加一个新功能,以添加+1
到我的新列(ConsecutiveDays
)中AccountsTable
.
例如:
Day 1: 2018-04-11 20:00
Day 2: 2018-04-12 15:30
Day 3: 2018-04-13 10:20
and etc ....
对于在连续几天内记录的用户帐户ID,连续总天数应为3天.
如果用户未登录day 4
- 2018-04-14
但在第二天登录,2018-04-15
则应将所有连续日期还原为1
.
我在MSSQL Server 2008 R2上搜索了类似的存储过程解决方案但没有成功.我根本不擅长SQL,所以我非常感谢你的帮助!先感谢您!
1> Zohar Peled..:
使用时不应该太难case
:
UPDATE AcccountsTable
SET COnsecutiveDays=
CASE WHEN CAST(LogDate as Date) = CAST(DATEADD(DAY, -1, GETDATE()) As Date)
AND ConsecutiveDays <28 THEN
ConsecutiveDays + 1
WHEN CAST(LogDate as Date) = CAST(GETDATE() as Date) THEN
ConsecutiveDays
ELSE
1
END,
ChallengesCompleted =
CASE WHEN COnsecutiveDays= 28
AND CAST(LogDate as Date) = CAST(DATEADD(DAY, -1, GETDATE()) As Date)
THEN
ChallengesCompleted + 1
ELSE
ChallengesCompleted
END,
LogDate = GETDATE()
WHERE AccID = @identity
@ Plar625,评论部分不是要求跟进问题的地方.你发了一个问题,Zohar回答了.他甚至把它带到你的第一级"哦,我忘了问......"你不应该在不理解它的作用的情况下使用他的代码,所以如果你花时间去弄清楚它,你应该能够自己完成查询.如果您需要更多帮助,或者您发现存在性能问题,则应通过开始新问题来处理这些问题.