如何为日期和时间维度设置 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
)
我有一个报告 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
)