ログインの記録をテーブルに保存します。 id、ip、date、timeの列があります。そのログインの記録から、最後の1時間だけに行われたログインを取得します。
時間と日付の関数に関するMySQLドキュメントを一掃していますが、それらを正しく組み合わせることができないようです。
誰か助けてくれますか?
DATE_SUB()およびNow()関数を使用します。
select count(*) as cnt
from log
where date >= DATE_SUB(NOW(),INTERVAL 1 HOUR);
それがあなたを助けることを願っています:)
これをcronjobに実装する場合は、開始と終了を指定する必要があります。
たとえば、午後2時、13:00:00から13:59:59までの過去1時間のデータを取得する場合、次のようにします。
dateField BETWEEN
DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 1 HOUR), '%Y-%m-%d %H:00:00')
AND
DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 1 HOUR), '%Y-%m-%d %H:59:59')
日付と時刻の列ではなく、日付と時刻の列を1つ持つことをお勧めします。
Last_loginというdatetime列があるとします:
SELECT id, ip_address, last_login
FROM mytable
WHERE last_login >= DATE_SUB(NOW(), interval 1 hour);
それを使用して簡単に行うことができます
select count(*) from logins where datetime>= NOW()- INTERVAL 1 HOUR
CURDATE()関数も使用できます
SELECT
count(*) AS TotalCount
FROM
tblName
WHERE
datetime >= DATE_SUB(CURDATE(), INTERVAL 1 HOUR)
詳細なしで、Date_Add()は機能すると思います.. where句にNOW負の時間を追加することで
(またはDate_Sub())