4

過去 5 分間にデータがデータベースに保存された場所を把握しようとしています。

SELECT COUNT(id), DATE_FORMAT(`timestamp`, '%Y-%m-%d %H:%i')
FROM `table`
WHERE `timestamp` >= CURRENT_TIMESTAMP - INTERVAL 5 MINUTE

timestampunix タイムスタンプ (1970 年からのミリ秒) です。

動作しませんnum_rows。0 ではなく null を取得し、使用すると

if (!isset($resultHistory->num_rows) || !$resultHistory->num_rows)

アクションを実行するために、コードはループに入りません..

私も試しました

SELECT COUNT(id), DATE_FORMAT(`timestamp`, '%Y-%m-%d %H:%i')
    FROM `table`
    WHERE DATE_FORMAT(`timestamp`, '%Y-%m-%d %H:%i') >= CURRENT_TIMESTAMP - INTERVAL 5 MINUTE
4

2 に答える 2

3

Current_timestamp は現在の日付を UNIX タイムスタンプではなく SQL TIMESTAMP として返すため、unix_timestamp 関数を使用して変換する必要があります

SELECT COUNT(id), from_unixtime(`timestamp` / 1000, '%Y-%m-%d %H:%i')
FROM `table`
WHERE `timestamp` >= unix_timestamp(CURRENT_TIMESTAMP - INTERVAL 5 MINUTE) * 1000

編集:

timestamp列には UNIX 時間が含まれているため、from_unixtime を使用して日付をフォーマットする必要もあります

EDIT2:

MySQL UNIX 時間はエポック (1/1/70) からの秒数であるため、timestamp列にミリ秒数が含まれている場合は、1000 で割る必要もあります。

于 2012-10-25T08:28:00.517 に答える
2

あなたはそのようにすることができます:

SELECT COUNT(id), DATE_FORMAT(`timestamp`, '%Y-%m-%d %H:%i')
FROM `table`
WHERE `timestamp` BETWEEN (DATE_SUB(NOW(),INTERVAL 5 MINUTE)) AND NOW()
于 2012-10-25T08:27:33.393 に答える