PHP / MySQL自用户上次登录以来的显示时间

时间:2012-06-21 22:29:18

标签: php mysql date time

我不知道我应该在数据库中存储什么样的价值。

我想我应该这样做,但我不知道如何:

存储自2000年1月1日起的给定日期以来的年,日,小时,分钟 然后在另一个时间我会将该值与自2000年1月1日以来的当前年,日,小时和分钟进行比较。显然,两者之间的区别在于用户上次登录后的时间。

我感谢任何人可以提供的任何帮助。 提前致谢

3 个答案:

答案 0 :(得分:3)

mysql会为您完成此操作。它将存储自1970年1月1日以来的秒数。并计算差异。

试试这个:SELECT NOW();。你会看到现在的日期/时间。试试SELECT UNIX_TIMESTAMP(NOW());你会看到自大纪元以来的秒数(但你通常不需要它)。

每次用户登录时都应存储此值,这意味着将now()插入表或更新last_login字段。

您有两种选择:

INSERT INTO user_login_history (user_id, login_date) VALUES (1, NOW());

UPDATE users SET last_login=NOW() WHERE user_id=1;

请注意,last_loginlogin_date字段必须为DATETIME类型(存储日期和时间)或TIMESTAMPDATE(只有日期)或TIME(仅限时间)。

此外,您可以使用DATEDIFF在mysql中进行时间计算,如下所示:

SELECT NOW(), DATEDIFF(NOW(), DATE('2012-6-5'));

在您的表格中,SELECT DATEDIFF(NOW(), last_login) AS "days_since_last_login" FROM users;

答案 1 :(得分:2)

为什么不使用TIMESTAMP或DATETIME?这就是你所需要的一切。

答案 2 :(得分:1)

您可以存储上次登录的时间戳,然后进行算术运算。也许你应该看一下DateTime :: diff方法让PHP做硬数学; - )