我有一个由' n'组成的字符串。位,即'010111000010...'
每个位代表一天(sql server datetime类型),即2014-10-03 00:00:00.000
我只知道两个日期:字符串第一位的日期和最后一位的日期。
连续位代表连续日期,即如果第一位(在这种情况下' 0')代表2014-10-03 00:00:00.000
,则第二位(在这种情况下' 1')代表2014-10-04 00:00:00.000
我想要检索所有0的日期(所有位都具有值' 0')而不是检查这些日期是否属于表格' DayOff' (DayOff_Date专栏)以最简单快捷的方式,如果可能的话,没有循环。
有人可以使用相应的代码来执行此操作
非常感谢
答案 0 :(得分:0)
在字符串上使用Charindex。 然后使用该索引
CHARINDEX ( expressionToFind ,expressionToSearch [ , start_location ] )
答案 1 :(得分:0)
使用添加到基准日期的序数拉取每个字符的CTE:
declare @str varchar(128) = '010111000010'
declare @pos int = 1
;With T( pos, charbit ) as
(
select @pos as pos, substring(@str, 1, 1)
union all
select pos + 1, substring(@str, pos + 1, 1)
from T
where pos <= len(@str) - 1
)
select
dateadd(DAY, pos, '2014-10-03 00:00:00.000')
from T
where charbit = 0
option (MAXRECURSION 1000)
(No column name)
2014-10-04 00:00:00.000
2014-10-06 00:00:00.000
2014-10-10 00:00:00.000
2014-10-11 00:00:00.000
2014-10-12 00:00:00.000
2014-10-13 00:00:00.000
2014-10-15 00:00:00.000