Я немного знаком с MySQL DATE и DATE_FORMAT.
Однако при выполнении запроса для диапазона дат с использованием ИНТЕРВАЛ - 30 ДНЕЙ я либо не получаю правильный вывод, либо выдает ошибку. Глядя дальше в таблицу, вы понимаете, что каждая строка для date_buy имеет формат следующего типа: понедельник, 09 сентября 2015 г. и т. д. Я пытался использовать PHP date('D d F Y') вместо DATE(NOW()) и такое, но я не могу решить проблему. Есть ли другой известный обходной путь для этого?
И да, пробовал МЕЖДУ date_buy_x и date_buy_y. Он ничего не возвращает, даже если в таблице есть записи.
SELECT SUM(sales_total), date_buy FROM `Sebastian Estate Sales`
WHERE date_buy >= $date - INTERVAL 30 DAY
GROUP BY date_buy
SELECT SUM(sales_total), date_buy FROM `Sebastian Estate Sales`
WHERE date_buy BETWEEN date_buy_x && date_buy_y
GROUP BY date_buy ORDER BY date_buy DESC
ОБНОВЛЕНИЕ
ТАК, на основе предложений и дальнейшего изучения параметров DATE_FORMAT и CURDATE, удалось отобразить данные. ORDER BY также должен быть в формате DATE_FORMAT(date_buy, '%a %d %M %Y') для правильного вывода. Однако по-прежнему остается проблема с параметром INTERVAL 30 DAY.
WHERE datebuy <= DATE_FORMAT(CURDATE() - INTERVAL 30 DAY,'%a %d %M %Y')
GROUP BY date_buy ORDER BY DATE_FORMAT(date_buy, '%a %d %M %Y') DESC
Это возвращает данные, но все еще выходит за пределы диапазона, что заставляет меня думать, что он не принимает запрос INTERVAL.
Sat 22 November 2014 (50 sales)
Thu 18 December 2014 (50 sales)
Thu 22 January 2015 (20 sales)
Sun 25 January 2015 (20 sales)
Mon 06 April 2015 (25 sales)
Sun 12 April 2015 (25 sales)
Mon 03 August 2015 (10 sales)
Когда вывод должен быть только:
Mon 03 August 2015 (10 sales)
DATE_FORMAT(...)
, чтобы получить ее в этом формате, а не хранить ее в этом формате. - person developerwjk   schedule 10.09.2015DESC `Sebastian Estate Sales`
- person Mike G   schedule 10.09.2015