Получение всех строк после отсечки временной отметки в MySQL - PullRequest
1 голос
/ 18 января 2012

Я пытаюсь извлечь все строки из таблицы с меткой времени UNIX за последние 30 дней.

SELECT count(member_id), DATE(FROM_UNIXTIME(`join_date`)) as date 
FROM members 
WHERE join_date > (join_date-'2592000')
GROUP BY DATE(FROM_UNIXTIME(`join_date`)) 
ORDER BY join_date DESC

Очевидно, что происходит больше, поскольку он группирует их по дням и конвертирует ихдо времени mysql, но важно то, что предложение where не работает .. Остальное хорошо.

Я не получаю никаких ошибок, но запрос не обрезается, как ожидалось.

Query Result

РЕДАКТИРОВАТЬ: Понял.

SELECT count(member_id), DATE(FROM_UNIXTIME(`join_date`)) as date 
FROM exp_members 
WHERE DATEDIFF(CURDATE(), FROM_UNIXTIME(join_date)) < 30
GROUP BY DATE(FROM_UNIXTIME(`join_date`)) 
ORDER BY join_date DESC

1 Ответ

1 голос
/ 18 января 2012

Это: WHERE join_date > (join_date-'2592000') почти наверняка ваша проблема.

Возможно, вы захотите сравнить join_date с CURDATE (а не с самим-x), используя DATEDIFF, чтобы вы могли использовать приращение целого дня вместо секунд как 259200, что лучше для человека.

...