使用mysql datetime数据类型时,如何以最佳方式按日,周,月的间隔获取数据组。如果通过函数转换日期时间,则会使索引无效。

我想获得每一天的访客数量。
而且还想在几个星期内每周获取总(访客)总数。
而且每月数据也要。

1.我的桌子

CREATE TABLE IF NOT EXISTS visitip (
                id INT(11) NOT NULL AUTO_INCREMENT,
                ip VARCHAR(20) NOT NULL,
                totalvisit INT(11) NOT NULL DEFAULT 0,
                lastvisit DATETIME NOT NULL,
                country VARCHAR(50) NOT NULL,
                countrycode CHAR(2) NOT NULL,
                city VARCHAR(50) NOT NULL,
                PRIMARY KEY (id),
                UNIQUE INDEX ipindex2 (ip),
                INDEX ccodeidx (countrycode),
                INDEX lastvisitidx (lastvisit)


2.我可以通过此查询获得今天的访客

SELECT * FROM visitip WHERE lastvisit >= CONCAT(CURDATE(),' 00:00:00')


3.我怎样才能每人最后7天?

4.我如何才能持续几个星期?

5.我每个月如何能维持几个月?

最佳答案

对于今天的游客
SELECT * FROM visitip WHERE DATE(lastvisit)= DATE(NOW());


3.FOR获得过去7天
SELECT * FROM visitip WHERE DATE(lastvisit)> DATE(DATE_ADD(NOW(),INTERVAL -7 DAY));



SELECT * FROM visitip WHERE DATE(lastvisit)> DATE(DATE_ADD(NOW(),INTERVAL -7 DAY));


5,
从访问者中选择MONTH(lastvisit),KAYIT_TARIH_SAAT,其中YEAR(lastvisit)= YEAR(NOW())和MONTH(lastvisit)= MONTH(NOW());

要么

SELECT * FROM visitip WHERE DATE_FORMAT(lastvisit,'%Y%m')= DATE_FORMAT(NOW(),'%​​Y%m')

09-26 23:30