添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《 阿里云开发者社区用户服务协议 》和 《 阿里云开发者社区知识产权保护指引 》。如果您发现本社区中有涉嫌抄袭的内容,填写 侵权投诉表单 进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

之前在网络查询了一下关于使用sql 查询 “几个工作日之后的日期”的问题,大意就是,假设今天是周三(2014/08/27),三个工作日之后(包含周三)就是周五(20140929),四个工作日之后,就是下周一(20140901),如果遇到法定节假日,则当周末处理(如周一是中秋节,则周一不算是工作日)。看了好几个答复,感觉实现起来都挺复杂的,今天学到一种比较简单的处理方法,希望对你有好处。

建立一个时间表 sjb,格式如下:

对于时间表,我们需要在数据库预先设置整一年或几年的数据,那对于查询出(今天)三个工作日之后的日期,其实就是查询日期类型为 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 多条数据,这样的存储空间,不在考虑范围之类。