我已经检查了这个问题(PHP/MySQL Display time since user's last login)并且没有帮助我。
我在MySQL数据库中有一个用户表。以下是用户表的字段。
uid
name
password
last_login (type = timestamp)
每当用户登录网站last_login字段时,都会使用当前日期时间(yyyy-mm-dd hh:mm:ss)
进行更新。
我能够更新last_login字段并且它正常工作。
现在,我想显示now和last_login时间之间的差异。我尝试了SQL查询来获取细节,但它无法正常工作。这是SQL查询。
mysql_query("SELECT DATEDIFF(NOW(), last_login) FROM user where uid=1");
我试图在phpMyAdmin中检查此查询,但它返回0.
请告知我的错误。
答案 0 :(得分:1)
declare -A foo=([a]=b [c]=d)
declare -A bar=([e]=f [g]=h)
varName=foo
varArray=$varName[@]
echo ${!varArray}
返回0,因为用户今天已登录(自上次登录后的天数)
您也可以使用TIMESTAMPDIFF
// using Function.prototype.call() to apply
// Array.prototype.map() to the array-like NodeList returned
// by document.querySelectorAll():
var elementIDs = Array.prototype.map.call(document.querySelectorAll('.cookie'), function (cookie) {
// the first argument to the anonymous function ('cookie') is
// the array element of the array over which we're iterating,
// and is here a DOM node.
// here, we return the id property of the current node:
return cookie.id;
});
供参考:
https://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_timediff
答案 1 :(得分:1)
以下是此答案的修改版本How to get data from last hour, last day and last month with one query?。
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 ..