我已经检查了这个问题(自用户上次登录以来的PHP/MySQL显示时间(,但它对我没有帮助。
我在MySQL数据库中有一个用户表。以下是用户表的字段。
uid
name
password
last_login (type = timestamp)
每当用户登录到网站last_login字段时,都会更新为当前日期时间(yyyy-mm-dd hh:mm:ss)
。
我能够更新last_login字段,并且它工作正常。
现在,我想展示一下现在和上次登录时间之间的区别。我尝试了SQL查询来获取详细信息,但它不起作用。这是SQL查询。
mysql_query("SELECT DATEDIFF(NOW(), last_login) FROM user where uid=1");
我试图在phpMyAdmin中检查这个查询,但它返回0。
请告诉我做错了什么。
下面是这个答案的修改版本,"如何用一个查询获取最后一小时、最后一天和最后一个月的数据?"?。
SELECT CASE WHEN DATE_SUB(NOW() , INTERVAL 1 HOUR ) <= last_login THEN concat(TIMESTAMPDIFF(Minute, last_login, NOW()), ' Minute(s)') ELSE 0 END HOURLY,
CASE WHEN DATE_SUB( NOW( ) , INTERVAL 1 DAY ) <= last_login THEN concat(TIMESTAMPDIFF(Hour, last_login, NOW()), ' Hour(s)') ELSE 0
END DAILY,
CASE WHEN DATE_SUB( NOW( ) , INTERVAL 1 MONTH ) <= last_login THEN concat(TIMESTAMPDIFF(DAY, last_login, NOW()), ' Day(s)') ELSE 0
END MONTHLY,
CASE WHEN DATE_SUB( NOW( ) , INTERVAL 1 YEAR ) <= last_login THEN concat(TIMESTAMPDIFF(MONTH, last_login, NOW()), ' Month(s)') ELSE 0
END YEAR
FROM users WHERE userid = 2203 or userid = 1 or userid = 1746
值为1
的第一列是用户上次登录的时间。后面的列仍将验证,因为如果他们在过去一小时内登录,则他们在过去的一天内登录,等等。
我不确定这是否现在更容易阅读,它不再是一个空的/不检查。现在,它将在列中显示与上次登录时间的差异;其他较大的列(月、年等(将用单位表示0。。
"SELECT DATEDIFF(NOW(), last_login) FROM user where uid=1"
返回0,因为用户今天已经登录(自上次登录以来的天(
您可以使用TIMESTAMPDIFF以及
"SELECT TIMEDIFF(NOW(), last_login) FROM user where uid=1"
参考:
https://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_timediff