при использовании типа данных 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. Как я могу получить последние несколько месяцев каждый?
3. ПОЛУЧИТЬ последние 7 дней
ВЫБРАТЬ * ОТ ОТДЫХА ГДЕ ДАТА (последний визит)> ДАТА (DATE_ADD (СЕЙЧАС (), ИНТЕРВАЛ -7 ДЕНЬ));
5.
ВЫБЕРИТЕ МЕСЯЦ (последний визит), KAYIT_TARIH_SAAT ОТ посещения, ГДЕ ГОД (последний визит) = ГОД (СЕЙЧАС ()) И МЕСЯЦ (последний визит) = МЕСЯЦ (СЕЙЧАС ());
или же
ВЫБРАТЬ * ОТ посещения, ГДЕ DATE_FORMAT (lastvisit, ‘% Y% m’) = DATE_FORMAT (NOW (), ‘% Y% m’)
Других решений пока нет …