-6

IDENT、TIME、および USER の 3 つの列を含む mySQL テーブルがあります。すべて varchar 型です。例えば:

IDENT = someuser::24::myisp.net::us
TIME = 2012-11-05 1:45:42
USER = someuser

私がやろうとしているのは、過去 5 日間の個別の IDENT の数を数えることです。次のことを試しましたが、失敗しました (すべての個別の IDENT がプルされたわけではありません)。

SELECT DISTINCT(IDENT)
     , (  UNIX_TIMESTAMP(now()) 
        - UNIX_TIMESTAMP(STR_TO_DATE(TIME, '%Y-%m-%d %H:%i:%s'))
       ) / 86400 AS numdays
FROM `PS_LOGIN_LOG` 
WHERE `USER` = 'someuser' 
GROUP BY IDENT
HAVING `numdays` <= 5
4

1 に答える 1

1

「 in the past 5 days 」が何を意味するのかは完全には明らかではありませんが、次の行に沿った何かがうまくいくはずです:

SELECT COUNT(DISTINCT IDENT)
FROM   PS_LOGIN_LOG
WHERE  USER = 'someuser'
   AND TIME >= CURRENT_DATE - INTERVAL 5 DAY
   AND TIME <  CURRENT_DATE + INTERVAL 1 DAY
于 2013-01-20T20:12:52.817 に答える