我不知道應該在數據庫中存儲什麼樣的值。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