Как найти записи, которые находятся в заданном временном интервале в SQL? - PullRequest
0 голосов
/ 25 января 2012

У меня есть таблица с некоторыми записями и столбцами, такими как купленные товары, время начала и время окончания.Время начала и окончания соответствует формату дд / гг чч: мм: сс.Но, учитывая промежуток времени, скажем, с 1 по 20 января, как мне найти сумму купленных предметов?

Я не уверен, что это просто, потому что, если есть записи, которые начинаются 15 января и заканчиваются 20 февраля.Невозможно сказать, сколько из этих предметов было куплено с 15 по 20 января, потому что только те записи должны быть включены в мой счет ...

Как бы вы подошли к этому?

спасибо

Ответы [ 2 ]

0 голосов
/ 25 января 2012

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

Варианты, которые мне кажутся наиболее подходящими, будут:

  1. Включать только записи, где время начала находится в пределах указанного диапазона дат (т. Е. Игнорировать время окончания).
  2. Включать только записи, где время окончания находится в пределах указанного диапазона дат (т. Е. Игнорировать время начала).
  3. Пропорционально покупаемым товарам (и любым другим соответствующим количествам) пропорцией диапазона дат записи, который находится в пределах указанного диапазона дат.

Вероятно, для этого сценария уже определены бизнес-правила - я подозреваю, что наиболее вероятен вариант 2.

0 голосов
/ 25 января 2012

Если starttime и endtime на самом деле являются datetime типами, а не текстом, попробуйте следующее:

SELECT SUM(itemsbought)
FROM items
WHERE starttime BETWEEN '2012-01-01' AND '2012-01-20'
  AND endtime BETWEEN '2012-01-01' AND '2012-01-20'

Таким образом, если starttime или endtime выходят за пределы диапазонаВы хотите, они не будут включены.

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