网站制作学习网经验与学习→正文:sql日期段交叉判断,交集
字体:

sql日期段交叉判断,交集

经验与学习 2016/11/4 11:56:52  点击:不统计

http://%77%77%77%2E%66%6F%72%61%73%70%2E%63%6E

 

在数据查询中遇到了 时间段交集情况查询,比如 table begintime endtime  我们要查询 [a,b]  a开始时间 b 结束时间 在表中是否有交叉重叠。

table

begintime       enditime

2016-08-08  2016-08-10

2016-09-09  2016-10-09

判断时间为 [2016-08-09,2016-08-11] [2016-08-13,2016-08-15] 

 

其实 看下图我们写sql就比较方便了



sql日期端交叉判断
        重叠  4                                   【----------------------------------】               就是开始时间和结束时间 包含了数据库字段时间
 

 

 

那么我们的sql语句即 :

select count(*) as num from table where (begintime < a and endtime >a and endtime <b) or (begintime > a  and endtime >b and beginttime <b) or (begintime <a and endtime >b) or (beginttime>a and b <endtime);

 

这样查询出来时间,如果num >0 则表示 有重叠,否则则没有重叠的的时间。

这样我们就查询出来时间交叉的数据。 上则是判断时间交叉的sql



网站制作学习网Foasp.cn

·上一篇:PHP编程效率的20个要点 >>    ·下一篇:.gitkeep >>
推荐文章
最新文章