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


PHP/MySQL Display time since user's last login

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

我想我应该做这样的事情,但我不知道怎么做:

存储自给定日期(如 1/1/2000)以来的年、日、小时、分钟然后在另一个时间,我将把该值与自 2000 年 1 月 1 日以来的当前年、日、小时和分钟进行比较。 显然,两者之间的差异是自用户上次登录以来的时间。

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

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

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;

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