2014-03-31 16 views
-1

假設我有一個只在星期一和星期四運行的時間表,它以「1001000」的形式表示。SQL - 如何使用日期標記獲取「自上次活動日以來的天數」

這是很容易檢查,如果我的日程表今天運行有:

set datefirst 1 

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

但我怎樣才能得到,因爲最近的活躍天的天數?

例如:

運行在週一應該回到0
運行在週二應該返回1
運行在週三應該返回2
運行在週四應該返回0
運行上週五應該返回1
星期六運行應該返回2
星期日運行應該返回3

+2

不要爲應使用表操作做花哨的字符串操作。爲日查找創建一個表格而不是字符串。 –

+0

「1001000」應該是一個字段,保存爲一個字符串? – freefaller

+0

目前尚不清楚1001000如何代表您的日程安排。 –

回答

1

你的a pproach真的不好。

但是,如果你不能改變architechture您可以使用此查詢:

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 
+0

太棒了,謝謝! – FBryant87

相關問題