我有一个表格,其中时间段存储在yyyyww
[其中ww
是周数]格式的2个单独的列中,如下所示,endweek
可以是{{1} }。
null
startweek | endweek |
201501 | 201602 |
201510 | 201702 |
201803 | NULL |
201933 | 202209 |
中的NULL
表示时间段无穷无尽。
问题:
通过SQL我希望通过传递任何时间段内的周数(endweek
)来获取记录/记录。
例如:
如果我通过yyyyww
它应该返回:
202001
我怎样才能做到这一点。
注意:数据库为201803 | NULL |
201933 | 202209 |
答案 0 :(得分:2)
这应该有效
declare @d int = 202001;
select *
From table
where startweek <= @d
and (@d <= endweek or endweek is null)
答案 1 :(得分:1)
select * From table where 202001 Between Cast(startweek as Integer) and
cast(isnull(endweek,'999999') as Integer)
将返回202001在开始周和周末间隔内的所有记录。整数转换是必要的,因此SQL不会执行字符串比较(较慢并可能导致错误的比较)。