sql 查詢幾個工作日之後的日期

之前在網絡查詢了一下關於使用sql 查詢 “幾個工作日之後的日期”的問題,大意就是,假設今天是週三(2014/08/27),三個工作日之後(包含週三)就是週五(20140929),四個工作日之後,就是下週一(20140901),如果遇到法定節假日,則當週末處理(如週一是中秋節,則週一不算是工作日)。看了好幾個答覆,感覺實現起來都挺複雜的,今天學到一種比較簡單的處理方法,希望對你有好處。

建立一個時間表 sjb,格式如下:

日期(tjrq) 節假日類型(type)
YYYYMMDD 0 工作日,1 正常週末,2 節假日。

節假日,可以是法定節假日,也可以自定義的特殊節假日。

對於時間表,我們需要在數據庫預先設置整一年或幾年的數據,那對於查詢出(今天)三個工作日之後的日期,其實就是查詢日期類型爲 1,往後的第三條數據即可,爲了在效率上更快,可以考慮分頁來實現。

如在 Oracle 上的查詢可以是:(在實際實現中,往往需要傳入今天的日期(20140828),第幾個工作日 3)

select * from ( select r.*, rownum rn from (

select tjrq from sjb where tjrq >= 20140828 and type= 0 order by tjrq asc

)r where rownum<=3 )pg where pg.rn= 3

在 mysql 上的查詢如下:

select tjrq from sjb where tjrq >= 20140828 and type= 0 order by tjrq asc limit 3,1

 

鑑於需要預先初始化數據,需要佔用一定的數據庫空間,不過一年才 300 多條數據,這樣的存儲空間,不在考慮範圍之類。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章