Вы неправильно смоделировали данные о покупке, отчасти потому, что пытались сохранить рассчитанное значение (10:00, 12:00, 13:00), а не полагаться на необработанные данные (дата / время).
Учитывайте ваши требования к отчетности при проектировании модели данных
Вот один из способов решения вашей текущей проблемы
У вас может быть базовая таблица покупок с последовательным приобретением_Нет, полем DateTimeи уникальный Product_Id (вам также может понадобиться поле «Количество», например)
Когда сделана покупка, эта таблица заполняется новой записью
Table: Purchases
Purchase_No, Purchase_DateTime, Product_Id, Quantity
Для вашего 'Почасовой отчет о закупках 'вы можете заполнить свой набор данных отчета, используя этот запрос
Select DayOf(p.PurchaseDateTime), HourOf(p.PurchaseDateTime), count(p.*)
From Purchases p
Group By DayOf(p.PurchaseDateTime), HourOf(p.PurchaseDateTime)
Order By count(p.*) Desc
Теперь ваш ответ будет 12:00 вместо 13:00.Все покупки, которые имеют значение Часа 12:00, очевидно, произошли где-то между 12:00 и 13:00.
Вам не нужно 12: 00-13: 00 , вы простонужно 12: 00 в надежном ежечасном отчете.
Я не уверен, как реализовать HourOf и DayOf вваша СУБД по вашему выбору, это не должно быть слишком сложно выяснить.