在2个整数之间的SELECT记录,其中上限是条件

时间:2018-03-12 14:13:09

标签: sql sql-server relational-database

我有一个表格,其中时间段存储在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 |

2 个答案:

答案 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不会执行字符串比较(较慢并可能导致错误的比较)。