码迷,mamicode.com
首页 > 数据库 > 详细

sql 查询几个工作日之后的日期

时间:2014-08-29 03:03:07      阅读:233      评论:0      收藏:0      [点我收藏+]

标签:工作日   网络   时间表   

之前在网络查询了一下关于使用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 多条数据,这样的存储空间,不在考虑范围之类。

sql 查询几个工作日之后的日期

标签:工作日   网络   时间表   

原文地址:http://peiquan.blog.51cto.com/7518552/1546279

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!