假设我有一个在星期一和星期四运行的时间表,则表示为'1001000'。
通过以下方式检查我的日程安排是否正常运行非常容易:
set datefirst 1
--select...
--where substring(dayflags, (select @@datefirst), 1) = '1'
但是,如何才能获得自最近一天活跃的一天以来的天数?
例如:
周一跑步应返回0
星期二运行应返回1
周三跑步应返回2
周四跑步应返回0
星期五运行应返回1
星期六跑,应该返回2
周日跑步应该返回3
答案 0 :(得分:1)
你的方法真的不好。
但是如果您无法更改架构,则可以使用此查询:
set datefirst 1
declare @dt date = getdate() + 1 - 1
, @mask varchar(7) = '0010010'
select charindex ('1', reverse (left (@mask + @mask, datepart (dw, @dt) + 7) ) ) - 1