2012-06-21 38 views
1

我不知道应该在数据库中存储什么样的值。PHP/MySQL自用户上次登录以来的显示时间

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

店这些年来,日,小时,分钟,因为一个给定日期像1/1/2000 然后我会在2000年1月1日以后将该值与当前年份,天数,小时数和分钟数进行比较。显然,两者之间的差异将是用户上次登录后的时间。

我很感激任何人都可以提供的帮助。 在此先感谢

+0

呀,时间字段是好的。每次用户登录时更新它,然后获取当前日期和已存储日期之间的差异 –

+0

您应该存储unix时间戳。这是自1970年1月1日以来的秒数,并且在几乎所有语言中都得到了很好的支持。 – kingcoyote

回答

2

为什么不只是使用TIMESTAMP或DATETIME?这几乎是你所需要的。

1

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

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_loginlogin_date领域将不得不要么DATETIME型(存储日期和时间)或TIMESTAMPDATE(仅限日期)或TIME(仅限时间)。

此外,您还可以做时间的计算在MySQL与DATEDIFF,就像这样:

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

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

+0

如果我使用:SELECT NOW(),DATEDIFF(NOW(),DATE('2012-6-5'));如何将值存入变量以便我可以使用echo打印它? – Milkbones

+0

你需要使用'mysql_query'。检查[示例](http://www.php.net/manual/en/function.mysql-query.php)知道如何使用它。如果它不够灵敏,我会编辑我的答案。 – jadkik94

相关问题