我不知道应该在数据库中存储什么样的值。PHP/MySQL自用户上次登录以来的显示时间
我想我应该做这样的事情,但我不知道如何:在另一
店这些年来,日,小时,分钟,因为一个给定日期像1/1/2000 然后我会在2000年1月1日以后将该值与当前年份,天数,小时数和分钟数进行比较。显然,两者之间的差异将是用户上次登录后的时间。
我很感激任何人都可以提供的帮助。 在此先感谢
我不知道应该在数据库中存储什么样的值。PHP/MySQL自用户上次登录以来的显示时间
我想我应该做这样的事情,但我不知道如何:在另一
店这些年来,日,小时,分钟,因为一个给定日期像1/1/2000 然后我会在2000年1月1日以后将该值与当前年份,天数,小时数和分钟数进行比较。显然,两者之间的差异将是用户上次登录后的时间。
我很感激任何人都可以提供的帮助。 在此先感谢
为什么不只是使用TIMESTAMP或DATETIME?这几乎是你所需要的。
您可以存储上次登录的时间戳,然后执行算术运算。也许你应该看看DateTime :: diff方法,让PHP做硬数学;-)
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
和login_date
领域将不得不要么DATETIME
型(存储日期和时间)或TIMESTAMP
或DATE
(仅限日期)或TIME
(仅限时间)。
此外,您还可以做时间的计算在MySQL与DATEDIFF
,就像这样:
SELECT NOW(), DATEDIFF(NOW(), DATE('2012-6-5'));
在你的餐桌,SELECT DATEDIFF(NOW(), last_login) AS "days_since_last_login" FROM users;
呀,时间字段是好的。每次用户登录时更新它,然后获取当前日期和已存储日期之间的差异 –
您应该存储unix时间戳。这是自1970年1月1日以来的秒数,并且在几乎所有语言中都得到了很好的支持。 – kingcoyote