如何为日期和时间维度设置 SQL 范围?

How do I do a SQL range for date and time dimensions?

我有一个报告 table,它具有 saledateid(天)和 saletimeid(分钟)维度。我需要 select 一个可能少于或多于一天的范围。如果范围超过一天(例如(1705, 901) -> (1708, 1140)表示2015-09-01 15:00:00 -> 2015-09-04 18:59:00)我可以使用:

WHERE (saledateid = 1705 AND saletimeid >= 901)
   OR (saledateid BETWEEN 1705 + 1 AND 1708 - 1)
   OR (saledateid = 1708 AND saletimeid <= 1140))

但是,当 saledateid 与 (1708, 901) to (1708, 1140)(仅 4 小时)相同(少于一天)时,这将不起作用,因为将返回一整天。我将不得不使用:

WHERE saledateid = 1708 AND saletimeid BETWEEN 901 AND 1140

我是否可以使用正确的表达式来涵盖这两种情况,或者我是否已在执行 SQL 之前在应用程序代码中做出决定?

我认为这会满足您的要求:

where (saledateid > 1705 or
       saledateid = 1705 and saletimeid >= 901
      ) and
      (saledateid < 1708 or
       saledateid = 1708 and saletimeid <= 1140
      )