Бортовой журнал Ктулху

MySQL: выборка с использованием дат

Несколько готовых решений по выборкам из базы на основе дат.

screenshot 2016 05 22 15 46 18

Выборка интервала между текущей датой и какой-то датой в будущем, например за следующую неделю:

SELECT * FROM `items` WHERE publicated_to BETWEEN current_date AND current_date + interval 7 day LIMIT 0, 100

Выбрать все записи за сегодня (сутки):

SELECT * FROM TABLE WHERE date >= CURDATE()

За вчерашний день:

SELECT * FROM TABLE WHERE date >= (CURDATE()-1) AND date < CURDATE()

За неделю:

SELECT * FROM TABLE WHERE date >= DATE_SUB(CURRENT_DATE, INTERVAL 7 DAY)

За месяц:

SELECT * FROM TABLE WHERE date >= DATE_SUB(CURRENT_DATE, INTERVAL 1 MONTH)

Если метка времени time хранится в UNIXTIME, выбрать можно так:

За сутки:

SELECT COUNT(*) FROM `table` WHERE `time`>NOW()-INTERVAL 24 HOUR

За двое суток:

SELECT COUNT(*) FROM `table` WHERE `time`>NOW()-INTERVAL 48 HOUR

За прошлые сутки:

SELECT COUNT(*) FROM `table` WHERE `time` BETWEEN (NOW()-INTERVAL 48 HOUR) AND (NOW() - INTERVAL 24 HOUR)

либо можно "обернуть" в UNIX_TIMESTAMP

UNIX_TIMESTAMP(DATE_SUB(CURRENT_DATE, INTERVAL 7 DAY))