我不知道我应该在数据库中存储什么样的值。
我想我应该做这样的事情,但我不知道如何:
存储自给定日期(如 2000 年 1 月 1 日)以来的年、日、小时、分钟然后在另一时间,我将该值与自 2000 年 1 月 1 日以来的当前年、日、小时和分钟进行比较。显然,两者之间的差异将是自用户上次登录以来的时间。
我感谢任何人可以提供的任何帮助。提前致谢
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_login
andlogin_date
字段必须是DATETIME
类型(存储日期和时间)或TIMESTAMP
或DATE
(仅日期)或TIME
(仅时间)。
此外,您可以使用 mysql 在 mysql 中进行时间计算DATEDIFF
,如下所示:
SELECT NOW(), DATEDIFF(NOW(), DATE('2012-6-5'));
在你的餐桌上,SELECT DATEDIFF(NOW(), last_login) AS "days_since_last_login" FROM users;
为什么不直接使用 TIMESTAMP 或 DATETIME?这就是你所需要的。
您可以存储上次登录的时间戳,然后进行算术运算。也许你应该看看 DateTime::diff 方法让 PHP 做一些困难的数学;-)