如何在sql中查找给定时间范围内的条目?

时间:2012-01-25 12:48:52

标签: sql date

我有一个包含一些条目的表,以及诸如itemsbought和starttime以及endtime之类的列。开始和结束时间类似于dd / yy hh:mm:ss格式。但是考虑到1月1日到1月20日的时间跨度,我如何找到物品的总和?

我不确定它是否直截了当,因为如果有条目从1月15日开始到2月20日结束。在1月15日到20日之间无法分辨出这些物品的数量,因为只有这些物品需要包含在我的计数中...

你会怎么做?

感谢

2 个答案:

答案 0 :(得分:0)

如果starttimeendtime实际上是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'

这样,如果starttimeendtime超出您想要的范围,则不会包含它们。

答案 1 :(得分:0)

我认为最好的方法是询问谁将使用查询的输出,他们希望如何处理它。

对我来说最合适的选项是:

  1. 仅包含starttime在指定日期范围内的条目(即忽略endtime)。
  2. 仅包括endtime在指定日期范围内的条目(即忽略starttime)。
  3. 按照指定日期范围内的记录日期范围的比例分配料品(和任何其他适当的数量)。
  4. 可能已经为这种情况定义了业务规则 - 我怀疑选项2是最有可能的。