sql语句判断两个时间段是否有交集 <非原创>

场景:  数据库有有两个字段.开始时间<startTime>,和结束时间<endTime>,指定一个时间段(a,b),a表示开始时间,b表示结束时间。看数据库中有没有与(a,b)冲突的时间段,有的话就返回那条记录。

解析:两个时间段相当于两个集合,不过是有顺序的集合。两个时间段有交集细分有四种情况。用sql直接判断无交集的语句可能也有,但是目前没有想到,只想到有交集的语句,如果返回不为空则表明有交集,否则没有交集。

view plaincopy

  1. select *
  2. from test_table
  3. where (startTime > a AND startTime < b) OR
  4. (startTime < a AND endTime > b) OR
  5. (endTime > a AND endTime < b)
时间: 2024-11-10 12:52:08

sql语句判断两个时间段是否有交集 <非原创>的相关文章

sql语句判断两个时间段是否有交集

场景:  数据库有有两个字段.开始时间<startTime>,和结束时间<endTime>,指定一个时间段(a,b),a表示开始时间,b表示结束时间.看数据库中有没有与(a,b)冲突的时间段,有的话就返回那条记录. 解析:两个时间段相当于两个集合,不过是有顺序的集合.两个时间段有交集细分有四种情况.用sql直接判断无交集的语句可能也有,但是目前没有想到,只想到有交集的语句,如果返回不为空则表明有交集,否则没有交集. select * from test_table where (s

mysql判断两个时间段是否有交集

//判断两个时间段是否有交集 private function checkTimeCross($start_time,$end_time){ $sql = "select id from dkh_recharge_activity where ( status = 1 AND is_del = 0 ) AND ((start_time > {$start_time} AND start_time < {$end_time}) OR (start_time < {$start_t

sql 判断两个时间段是否有交集

本文转自CSDN 链接地址:http://blog.csdn.net/dasihg/article/details/8450195 时间段:starttime_1到endtime_1,starttime_2到endtime_2 SQL语句:where least(endtime_1, endtime_2) > greatest(starttime_1, starttime_2) 解释:least取最小值,greatest取最大值. 创建函数least.greatest CREATE FUNCTI

Java判断两个时间段是否有交集

public static SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); private static boolean isOverlap(String startdate1, String enddate1,String startdate2, String enddate2) { Date leftStartDate = null; Date leftEndDate = null; Da

Oracle判断两个时间段是否有重叠

判断两个时间段是否有重叠 (a,b),(c,d) 判断两段时间是否有重叠 方法一 select 'yes' from dual where d>a  and c<b; 方法二 select 'yes' from dual where (a, b) overlaps (c,d); 方法三 select 'yes' from dual where a between c and d or d between a and b;

PHP计算两个时间段是否有交集(边界重叠不算)

<?php /** * PHP计算两个时间段是否有交集(边界重叠不算) * * @param string $beginTime1 开始时间1 * @param string $endTime1 结束时间1 * @param string $beginTime2 开始时间2 * @param string $endTime2 结束时间2 * @return bool * @author blog.snsgou.com */ function is_time_cross($beginTime1 =

计算两个时间段是否有交集

1 /** 2 * PHP计算两个时间段是否有交集(边界重叠不算) 3 * @param string $beginTime1 开始时间1 4 * @param string $endTime1 结束时间1 5 * @param string $beginTime2 开始时间2 6 * @param string $endTime2 结束时间2 7 * @return bool 8 */ 9 function is_time_cross($beginTime1 = '', $endTime1 =

SQL语句:两个时间区间段,只要有交集,就能筛选出来

设定固定时间段:8.2--->8.5 也就是:两个时间段,只要有交集就能筛选出来: 下面的两个sql语句,实现的效果是一样的: 1:$sql="select * from fs_ads where `start_time` <= '$ed' and `end_time` >= '$sd'"; 2: $sql="select * from (select ads_id,file_id,client_type,client_name,brand,model,ca

sql 语句 查询两个字段都相同的方法

这是替代方法 先使用着 select * from ofgroup where groupId in (select groupId from ofgroup where  uid ='".$_GET['value']."' and useraid='0') groupid定位死 就显示一个 与它对应的也是相同的 每个人的清况不一样 sql语句也大有区别