用户上次使用PHP和MySQL登录的时间

时间:2015-05-30 16:56:09

标签: php mysql

我已经检查了这个问题(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.

请告知我的错误。

2 个答案:

答案 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 ..