【问题标题】:How to find entries that are within a given timespan in sql?如何在sql中查找给定时间跨度内的条目?
【发布时间】:2012-01-25 12:48:52
【问题描述】:

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

我不确定它是否简单,因为如果有条目从 1 月 15 日开始并在 2 月 20 日结束怎么办。无法确定在 1 月 15 日至 20 日期间购买了多少这些物品,因为只有这些条目需要计入我的计数中......

你会如何处理这个问题?

谢谢

【问题讨论】:

    标签: sql date


    【解决方案1】:

    如果 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 超出您想要的范围,它们将不会被包括在内。

    【讨论】:

      【解决方案2】:

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

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

      1. 仅包括开始时间在指定日期范围内的条目(即忽略结束时间)。
      2. 仅包含结束时间在指定日期范围内的条目(即忽略开始时间)。
      3. 按指定日期范围内的记录日期范围的比例按比例购买的物品(和任何其他适当的数量)。

      可能已经为此场景定义了业务规则 - 我怀疑选项 2. 最有可能。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-10-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-03-23
        相关资源
        最近更新 更多