0

在我的 MySQL 数据库中,我有一个带有 mac 地址和时间的表(例如 T)(例如,2012-4-30 23:00:00)。我想过滤掉本周出现的那些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 回答