我想使用calendar week
检查PL/SQL
是否在两个日历周之间。
假设我要检查的日历周是26
。当我检查这是between 24 and 27
时,它应该返回true
。
这部分很容易我可以使用BETWEEN X AND Y
来解决这个问题。
但是,如果我要检查的日历周是52
,如果我想检查这是between 50 and 3
,则应该返回true
。如您所知,使用BETWEEN X AND Y
将无法在此处给出正确的结果。
好吧,我可以查看哪个日历周更大,我可以根据它进行比较,但这对我来说听起来不是一个优雅的解决方案。在这种情况下你会建议什么?
答案 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)
的第二种情况,这是不正确的。