データベースにどのような値を格納する必要があるのかわかりません。
私はこのようなことをすべきだと思っていますが、方法がわかりません:
2000年1月1日のような指定日からの年、日、時間、分を保存します。次に、その値を2000年1月1日からの現在の年、日、時間、分と比較します。明らかに、この2つの違いは、ユーザーが最後にログインしてからの時間です。
私は誰もがこれに関して提供できるどんな助けにも感謝します。前もって感謝します
TIMESTAMPまたはDATETIMEを使用しないのはなぜですか?文字通り必要なのはそれだけです。
mysql
あなたのためにこれを行います。1970 年 1 月 1 日からの秒数を保存し、差を計算します。
これを試してください: SELECT NOW();
. 現在の日付/時刻が表示されます。試してみるSELECT UNIX_TIMESTAMP(NOW());
と、エポックからの秒数が表示されます (ただし、通常は必要ありません)。
ユーザーがログインするたびにこの値を保存する必要があります。つまり、now() をテーブルに挿入するか、last_login フィールドを更新します。
次の 2 つのオプションがあります。
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
(日付と時刻を格納する) or (日付のみ) or (時刻のみ) のいずれかのタイプTIMESTAMP
でDATE
ある必要があることに注意してくださいTIME
。
DATEDIFF
また、次のように mysql で時間計算を行うこともできます。
SELECT NOW(), DATEDIFF(NOW(), DATE('2012-6-5'));
あなたのテーブルでは、SELECT DATEDIFF(NOW(), last_login) AS "days_since_last_login" FROM users;
最後のログインのタイムスタンプを保存してから、計算を行うことができます。たぶん、PHPに難しい計算をさせるためにDateTime::diffメソッドを見る必要があります;-)