Не могу запросить более 30 дней - PullRequest
0 голосов
/ 11 июня 2018

У меня следующий запрос MySQL:

SELECT
CONVERT_TZ(date1, '+0:00', '-7:00') as date,
sum(base_subtotal) as `base_subtotal`
FROM sales
WHERE date1 > (NOW() - interval 90 DAY)
GROUP BY DAY(date)
ORDER BY date DESC; 

Несмотря на получение данных за 90 дней, MySQL возвращает только 30-дневный хвост для любого конкретного интервала дат.Итак, если сегодня 11 июня, и я получаю запрос с помощью команды "interval 30 day", я получу все даты за период до 30 дней назад.Однако, если я сделаю то же самое с командой 60 дней, я получу даты 30 дней назад, НАЧИНАЮТСЯ месяц назад, другими словами, я получу даты между 14 апреля и 11 мая, но, как ни странно, также и 31 мая.

Сумма итогов за день также начинает увеличиваться, и когда я запускаю код всего за определенный месяц для проверки итогов, скажем, что я использую команду "HERE Date(date1) BETWEEN '2018-05-01' AND '2018-05-31'", я получаю разные значения.

Что яделать неправильно?Я читал что-то об ошибках «переполнения» в Java, но не уверен, что это происходит.Я просто хочу увидеть общее количество продаж в день за последние 90 дней.

Ответы [ 3 ]

0 голосов
/ 11 июня 2018

Ваша группа делает это только для дня месяца (т. Е. 1-го, 2-го, 3-го ... 31-го) и группирует их вместе.Если вы измените «группировать по дням (дата)» на «группировать по дате», это должно работать.

0 голосов
/ 11 июня 2018

DAY(date) это просто день месяца.Таким образом, когда вы группируете это, результаты одного и того же дня в разные месяцы будут сгруппированы вместе.Вы должны использовать GROUP BY DATE(date) вместо.

0 голосов
/ 11 июня 2018

Проблема может быть замечена в этой строке:

GROUP BY DAY(date)

, поскольку день не может быть меньше 1 или больше 31, и он будет таким же, вам нужно будет сгруппировать по дате, если вы хотитечтобы получить больше результатов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...