0

私のMySQLデータベースには、MACアドレスと時刻(例:2012-4-30 23:00:00)を含むテーブル(例:T)があります。今週表示されたが前週には表示されなかったMACアドレスを除外したいと思います。

どうすればそれを一文で行うことができますか?複数選択を使用しようとしましたが、方法が見つかりませんでした。

前もって感謝します。

4

3 に答える 3

0

を使用できますYEARWEEK

今週のレコードを取得するには:

SELECT * FROM T WHERE YEARWEEK(your_datetime_column) = YEARWEEK(NOW());

前の週のレコードのみを取得するには:

SELECT * FROM T WHERE YEARWEEK(your_datetime_column) < YEARWEEK(NOW());
于 2012-05-02T02:30:04.453 に答える
0

テーブル構造がなければ、次のようなものを提案します。

SELECT [DISTINCT] Mac FROM table t
WHERE 
t.Time BETWEEN '2012-01-09 00:00:00' AND '2012-01-16 23:59:59'
AND 
NOT EXISTS (SELECT * FROM FROM table t2 WHERE t2.Mac = t.Mac AND T2.Time BETWEEN '2012-01-01 00:00:00' AND '2012-01-08 23:59:59'
于 2012-05-02T02:30:11.157 に答える
0

今週はあるが前週はないMacアドレスを取得するには、次のようなものを使用できます。

SELECT *
FROM T
WHERE YEARWEEK(T.Time) = YEARWEEK(NOW())
AND T.MacAddress NOT IN (
    SELECT MacAddress
    FROM T AS T2
    WHERE YEARWEEK(T2.Time) = YEARWEEK(TIMESTAMPADD(WEEK, -1, NOW())));

これは、bfavarettoがすでに提案しているようにYEARWEEK関数を使用し、 TIMESTAMPADD関数を使用して前の週を計算します。

于 2012-05-02T02:40:22.600 に答える