У меня есть таблица, состоящая из поля даты и поля штрих-кода; Я хочу, чтобы число штрих-кодов было сгруппировано по дням за предыдущий месяц.SQLite strftime Group От
Это выглядело, как это будет работать:
SELECT COUNT(*) AS count, strftime('%d-%m-%Y',date) AS day FROM barcodes WHERE date >= datetime('now', '-1 month') GROUP BY day ORDER BY date ASC;
Но это дает мне неправильные отсчеты. Например:
341|30-01-2017 274|31-01-2017 288|01-02-2017 332|02-02-2017 224|03-02-2017 35|04-02-2017 1009|06-02-2017 1481|07-02-2017 1626|08-02-2017 507|09-02-2017 428|10-02-2017 125|11-02-2017 1838|13-02-2017 2591|
Принимая во внимание:
SELECT COUNT(*) FROM barcodes WHERE date LIKE '2017-02-10%'; 579
Если я это сделать:
SELECT COUNT(*) AS count, strftime('%d-%m-%Y',date) AS day FROM barcodes WHERE date LIKE '2017-02-10%' GROUP BY day ORDER BY date ASC;
я получаю:
428|10-02-2017 151|
Так что мой вопрос: почему SQLite обеспечивая результат как две строки, когда я использую strftime()?
Рекомендации по использованию% Y-% m-% d, я попробовал: 'SELECT MAX (дата), COUNT (*) как граф, STRFTIME ('% Y-% m-% d', дата), как день ОТ штрихкодов ГДЕ дата, как '2017-02-10' % GROUP BY день ЗАКАЗ BY date ASC; ' Но это все еще похоже на разделение счета на этот день: ' 2017-02-10 16: 11: 23 | 428 | 2017-02-10 2017-02-10 9: 59: 06 | 151 | ' –
Sean
У вас есть недопустимые даты в базе данных. –
Я думаю, что вы правы! Для 2017-02-10 у меня есть 151 дата, у которой нет часа, отформатированного как двузначный (без начального нуля). Спасибо! – Sean