Oracle SQL:如何检查日历周是否在两个日历周之间

时间:2017-10-12 16:03:34

标签: sql oracle

我想使用calendar week检查PL/SQL是否在两个日历周之间。

假设我要检查的日历周是26。当我检查这是between 24 and 27时,它应该返回true

这部分很容易我可以使用BETWEEN X AND Y来解决这个问题。

但是,如果我要检查的日历周是52,如果我想检查这是between 50 and 3,则应该返回true。如您所知,使用BETWEEN X AND Y将无法在此处给出正确的结果。

好吧,我可以查看哪个日历周更大,我可以根据它进行比较,但这对我来说听起来不是一个优雅的解决方案。在这种情况下你会建议什么?

2 个答案:

答案 0 :(得分:6)

您只能比较2周的数字,因为任何一周的数字都是在另外一周的2周之间!

您需要精确的年份并且具有前导零的固定格式:

示例:

'2017-W52' is     between '2017-W50' and '2018-W03'

'2018-W52' is not between '2017-W50' and '2018-W03'

包含date的字符串可以使用ISO-8601格式

进行比较

答案 1 :(得分:0)

你可以使用这样的逻辑:

where (x <= y and v_week >= x and v_week <= y) or
      (x > y and (v_week <= x or v_week >= y))

你几乎可以这样写:

where (x <= y and v_week between x and y) or
      (x > y and v_week not between x and y)

但是,对于v_week in (x, y)的第二种情况,这是不正确的。