ログインの記録をテーブルに保持します。ID、IP、日付、時刻の列があります。そのログインの記録から、過去 1 時間にのみ行われたログインを取得したいと考えています。
時間と日付の関数に関する MySQL ドキュメントを一通り調べていますが、それらを正しく組み合わせることができないようです。
誰か助けてくれませんか?
ログインの記録をテーブルに保持します。ID、IP、日付、時刻の列があります。そのログインの記録から、過去 1 時間にのみ行われたログインを取得したいと考えています。
時間と日付の関数に関する MySQL ドキュメントを一通り調べていますが、それらを正しく組み合わせることができないようです。
誰か助けてくれませんか?
DATE_SUB() および Now() 関数を利用します。
select count(*) as cnt
from log
where date >= DATE_SUB(NOW(),INTERVAL 1 HOUR);
それがあなたを助けることを願っています:)
を使用して簡単に行うことができます
select count(*) from logins where datetime>= NOW()- INTERVAL 1 HOUR
日付と時刻の列ではなく、1 つの datetime 列を使用することをお勧めします。
last_login という日時列があるとします。
SELECT id, ip_address, last_login
FROM mytable
WHERE last_login >= DATE_SUB(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() )