59

ログインの記録をテーブルに保持します。ID、IP、日付、時刻の列があります。そのログインの記録から、過去 1 時間にのみ行われたログインを取得したいと考えています。

時間と日付の関数に関する MySQL ドキュメントを一通り調べていますが、それらを正しく組み合わせることができないようです。

誰か助けてくれませんか?

4

6 に答える 6

167

DATE_SUB() および Now() 関数を利用します。

select count(*) as cnt
from  log
where date >= DATE_SUB(NOW(),INTERVAL 1 HOUR); 

それがあなたを助けることを願っています:)

于 2010-09-09T23:43:12.893 に答える
6

を使用して簡単に行うことができます

select count(*) from logins where datetime>= NOW()- INTERVAL 1 HOUR
于 2013-12-22T12:31:01.717 に答える
4

日付と時刻の列ではなく、1 つの datetime 列を使用することをお勧めします。

last_login という日時列があるとします。

SELECT id, ip_address, last_login
FROM mytable
WHERE last_login >= DATE_SUB(NOW(), interval 1 hour);
于 2010-09-09T23:48:19.403 に答える
1

CURDATE() 関数を使用することもできます

SELECT
    count(*) AS TotalCount
FROM
    tblName
WHERE
    datetime >= DATE_SUB(CURDATE(), INTERVAL 1 HOUR)
于 2016-08-02T12:07:30.260 に答える
0

詳細がなければ、 Date_Add() が機能すると思います.. where 句に NOW 負の時間を追加することで

(または Date_Sub() )

于 2010-09-09T23:43:41.153 に答える