SQL - 如何获取自上次活动日以来的天数'使用天旗

时间:2014-03-31 11:35:42

标签: sql sql-server sql-server-2008

假设我有一个在星期一和星期四运行的时间表,则表示为'1001000'。

通过以下方式检查我的日程安排是否正常运行非常容易:

set datefirst 1

--select...
--where substring(dayflags, (select @@datefirst), 1) = '1'

但是,如何才能获得自最近一天活跃的一天以来的天数?

例如:

周一跑步应返回0
星期二运行应返回1
周三跑步应返回2
周四跑步应返回0
星期五运行应返回1
星期六跑,应该返回2
周日跑步应该返回3

1 个答案:

答案 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