2009-08-09

[SQL]星期判斷

最近有個每個禮拜每天大同小異的 SQL 要執行 的工作 可是星期一到星期五執行的SQL有點小不同

星期一到五:中長放停復催
星期二到四:短放放停復催 (本週不重複發送)
星期一:短放停復催 (以核心主機為准發送)
星期二:協商成功
星期四:協商失敗

以上有些 SQL 內容大同小異 如果要透過 database 設定不同時程的 job 就有兩個討人厭的問題

1. 管理介面中一大堆 job 因為每個星期X執行的不同 最笨的就是依據以上規則 定出 五 組
2. 有些 SQL 幾乎相同 如果有改 還得知道要兩邊一起維護 麻煩

所以...

datediff(day, convert(datetime, '2006-12-03'), getdate()) % 7 = 2 -- 就是星期二

透過以上的作法 就能在同一個規劃範圍內 好好地操作執行的時機了

更新在 MS SQL 上可以應用的 function 如下 (感謝 jameswu & topcat 大大)

select datename(weekday, getdate()) -- MSSQL & sybase 均同

因語系設定不同會有不同結果 星期五 or Friday
這個用在產生查詢結果好用

不過如果需要用數字來運算或處理的話,可以改用以下的方法

1 -- default date first = 7
2
3 SET DATEFIRST 1
4 select datepart(weekday, getdate()) -- 回傳5,表示是星期五
5
6 SET DATEFIRST 7
7 select datepart(weekday, getdate()) -- 回傳6,表示是星期五

*****************************************************************
個人網站:藍色小惡魔的部落閣

沒有留言: