Как получить строки из MySQL за последние 7 дней? - PullRequest
0 голосов
/ 05 мая 2018

Как я могу получить строки из таблицы articles за последние 7 дней? Каждая строка имеет значение timestmp, где время задается с помощью time (). Я пробовал это:

SELECT COUNT(*) FROM `articles` WHERE `timestmp`>NOW()-INTERVAL 168 HOUR

Это не работает для меня: (

Таблица:

CREATE TABLE `articles` (
`id`        int(11) NOT NULL AUTO_INCREMENT,
`link`          text NOT NULL,
`article_name`  text NOT NULL,
`descript`      text NOT NULL,
`preview`       text NOT NULL,
`content`       text NOT NULL,
`category`      int(11) NOT NULL,
`author`        text NOT NULL,
`keywrds`       text NOT NULL,
`timestmp`      int(11) NOT NULL,
`modified`      int(11) NOT NULL,
PRIMARY KEY (`id`),
FULLTEXT (`keywrds`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;

Ожидаемый результат - все статьи за последние 7 дней с именами, описаниями и т. Д.

1 Ответ

0 голосов
/ 05 мая 2018

В вашем столбце timestmp должна храниться метка времени UNIX, представляющая собой количество секунд с начала эпохи UNIX 1 января 1970 года. Итак, если вы просто хотите получить записи, которые произошли именно в течение последних 7 дней, тогда вы можете просто вычесть 7 дней (в секундах) из столбца timestmp:

SELECT COUNT(*) AS cnt
FROM articles
WHERE timestmp > UNIX_TIMESTAMP() - 7*24*60*60;

Если вместо этого вам нужны записи 7 дней назад, включая весь первый день, тогда нам нужно проделать дополнительную работу. В этом случае мы должны вычислить полночь первого дня, а затем преобразовать ее в метку времени UNIX.

SELECT COUNT(*) AS cnt
FROM articles
WHERE timestmp > UNIX_TIMESTAMP(DATE(NOW() - INTERVAL 7 DAY))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...