我有一个报告表,其中包含saledateid(days)和saletimeid(分钟)维度。我需要选择一个可能少于或超过一天的范围。如果范围超过一天(例如(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之前我是否已决定应用程序代码?
答案 0 :(得分:2)
我认为这会做你想做的事情:
where (saledateid > 1705 or
saledateid = 1705 and saletimeid >= 901
) and
(saledateid < 1708 or
saledateid = 1708 and saletimeid <= 1140
)