1

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

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

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

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

4

3 回答 3

3

mysql会为你做这件事。它将存储自 1970 年 1 月 1 日以来的秒数。并计算差值。

试试这个:SELECT NOW();。您将看到现在的日期/时间。尝试一下SELECT UNIX_TIMESTAMP(NOW());,您会看到自 Epoch 以来的秒数(但您通常不需要)。

您应该在每次用户登录时存储此值,这意味着将 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_loginandlogin_date字段必须是DATETIME类型(存储日期和时间)或TIMESTAMPDATE(仅日期)或TIME(仅时间)。

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

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

在你的餐桌上,SELECT DATEDIFF(NOW(), last_login) AS "days_since_last_login" FROM users;

于 2012-06-21T22:37:23.240 回答
3

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

于 2012-06-21T22:31:39.577 回答
1

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

于 2012-06-21T22:32:31.647 回答