sql语句判断两个时间段是否有交集
2016-06-05 22:33
513 查看
场景: 数据库有有两个字段.开始时间<startTime>,和结束时间<endTime>,指定一个时间段(a,b),a表示开始时间,b表示结束时间。看数据库中有没有与(a,b)冲突的时间段,有的话就返回那条记录。
解析:两个时间段相当于两个集合,不过是有顺序的集合。两个时间段有交集细分有四种情况。用sql直接判断无交集的语句可能也有,但是目前没有想到,只想到有交集的语句,如果返回不为空则表明有交集,否则没有交集。
sql语句:
[sql] view
plain copy
select *
from test_table
where (startTime > a AND startTime < b) OR
(startTime < a AND endTime > b) OR
(endTime > a AND endTime < b)
解析:两个时间段相当于两个集合,不过是有顺序的集合。两个时间段有交集细分有四种情况。用sql直接判断无交集的语句可能也有,但是目前没有想到,只想到有交集的语句,如果返回不为空则表明有交集,否则没有交集。
sql语句:
[sql] view
plain copy
select *
from test_table
where (startTime > a AND startTime < b) OR
(startTime < a AND endTime > b) OR
(endTime > a AND endTime < b)
相关文章推荐
- 一个 SQL 分段排序的问题(也可以理解为 段内汇总排序问题)
- Redis与Memcached的区别
- MySQL中replace into语句的用法详解
- MySQL学习20:运算符与函数之自定义函数
- log4j中debug模式下输出sql
- 学习MVC操作oracle时报错java.lang.AbstractMethodError
- mysql 主从复制配置详解
- MySQL数据库十大优化技巧
- MongoDB
- MySQL备份innodbackupex使用
- mysql 主从复制配置详解
- 数据库连接PreparedStatement
- Mysql逻辑模块组成
- 【DRP】将DRP物理模型导出SQL脚本
- 便签8-数据库登陆
- Entity Framework(code first)数据库初始化
- redis订阅发布示例
- 数据库连接Statement对象
- 数据库操作综合
- Entity Framework数据库初始化四种策略