我在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
如果有任何帮助来构建查询,请提前感谢。
答案 0 :(得分:0)
UPDATE table
SET days=days+IF($logindate=lastlogin, 0, 1), lastlogin=$logindate
WHERE username='xyz'
请注意lastlogin=$logindate
必须在DATEDIFF之后显示,否则DATEDIFF将始终返回0,因为lastlogin = $ logindate首先发挥作用。