0

我在 mysql 表中有以下结构:

-------------------------------------
| id | username | lastlogin  | days |
-----+----------+------------+-------
| 1  | user-xyz | 2013-04-29 | 0    |
-------------------------------------

上面的“lastlogin”列是日期列,“days”列是 int(3) 列。我想要做的是,当用户登录时,lastlogin 列将像往常一样每次更新。同时,如果登录日期(用户登录时)大于 lastlogin 列的日期,“days”列将递增。如果用户在同一天再次登录,则天数将相同(不会更新)。

在这种情况下,mysql 查询将是什么?

查询格式将是这样的:

$logindate = date("Y-M-D",time());

UPDATE table
SET lastlogin=$logindate, days=days+1 if $logindate>lastlogin
WHERE usename=user-xyz

如果对构建查询有任何帮助,请提前致谢。

4

1 回答 1

0
UPDATE table
SET days=days+IF($logindate=lastlogin, 0, 1), lastlogin=$logindate
WHERE username='xyz'

请注意,lastlogin=$logindate它必须出现在DATEDIFF之后,否则 DATEDIFF 总是返回 0,因为 lastlogin=$logindate 首先起作用。

于 2013-05-01T08:28:10.297 回答