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 FUNCTION least
(
 @time1 datetime,
 @time2 datetime
)
RETURNS datetime
AS
BEGIN
declare @ret datetime
 if(@time2>@time1)set @[email protected]
 else set @[email protected]
return @ret
END
GO

CREATE FUNCTION greatest
(
 @time1 datetime,
 @time2 datetime
)
RETURNS datetime
AS
BEGIN
declare @ret datetime
 if(@time2<@time1)set @[email protected]
 else set @[email protected]
return @ret
END
GO

  

时间: 2024-11-20 03:08:49

sql 判断两个时间段是否有交集的相关文章

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语句判断两个时间段是否有交集

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

sql语句判断两个时间段是否有交集 &lt;非原创&gt;

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

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 Server 两个时间段的差and时间截取到时分

/*--------------------------时间截取到时分-----------------------------------*/ select Left(CONVERT(varchar(100), '2017-11-24 19:25:30.740', 20),16)--返回2017-11-24 19:25 --单独截取 select datepart(hour,'2017-11-24 19:25:30.740')--返回小时19 /*-----------------两个时间段的

sql求两表的并集、交集、非交集、差集、结果集排序

create table A( id int IDENTITY(1,1) Not null primary key, name varchar(20) not null default(''), ) INSERT INTO [A]([name]) VALUES('a') INSERT INTO [A]([name]) VALUES('b') INSERT INTO [A]([name]) VALUES('c') INSERT INTO [A]([name]) VALUES('d') INSERT