2012-06-21 72 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