1

データベースにどのような値を格納する必要があるのか​​わかりません。

私はこのようなことをすべきだと思っていますが、方法がわかりません:

2000年1月1日のような指定日からの年、日、時間、分を保存します。次に、その値を2000年1月1日からの現在の年、日、時間、分と比較します。明らかに、この2つの違いは、ユーザーが最後にログインしてからの時間です。

私は誰もがこれに関して提供できるどんな助けにも感謝します。前もって感謝します

4

3 に答える 3

3

TIMESTAMPまたはDATETIMEを使用しないのはなぜですか?文字通り必要なのはそれだけです。

于 2012-06-21T22:31:39.577 に答える
3

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 (時刻のみ) のいずれかのタイプTIMESTAMPDATEある必要があることに注意してくださいTIME

DATEDIFFまた、次のように mysql で時間計算を行うこともできます。

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

あなたのテーブルでは、SELECT DATEDIFF(NOW(), last_login) AS "days_since_last_login" FROM users;

于 2012-06-21T22:37:23.240 に答える
1

最後のログインのタイムスタンプを保存してから、計算を行うことができます。たぶん、PHPに難しい計算をさせるためにDateTime::diffメソッドを見る必要があります;-)

于 2012-06-21T22:32:31.647 に答える