zoukankan      html  css  js  c++  java
  • SQL 判断两个时间段是否有交叉

    费话不说,直接上代码

    SQL 代码:

    View Code
    IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[fun_GetTimeSlotDays]'))
    DROP FUNCTION [dbo].fun_GetTimeSlotDays
    GO
    
    -- =============================================
    -- Author:        <Mike.Jiang>
    -- Create date: <2012-07-18>
    -- Description:    <判断两个时间断是否有交叉,如果有则返回1,否则返回0>
    -- =============================================
    CREATE FUNCTION dbo.fun_GetTimeSlotDays(
    @fromDate DATETIME,
    @toDate DATETIME,
    @startDate DATETIME,
    @endDate DATETIME
    )
    RETURNS INT 
    AS 
    BEGIN
       DECLARE @ret INT;
       IF(DATEDIFF(DAY,@fromDate,@endDate)>=0 AND DATEDIFF(DAY,@endDate,@toDate)>=0 )
          SET @ret=1;
       IF(DATEDIFF(DAY,@startDate,@toDate)>=0 AND DATEDIFF(DAY,@toDate,@endDate)>=0 )
          SET @ret=1;
       IF (@ret is null)
          SET @ret=0;
       RETURN @ret;
    END
    GO

    测试代码:

    SELECT dbo.fun_GetTimeSlotDays('2012-03-01','2012-03-10','2012-02-10','2012-02-20');
    SELECT dbo.fun_GetTimeSlotDays('2012-03-01','2012-03-10','2012-02-01','2012-03-01');
    SELECT dbo.fun_GetTimeSlotDays('2012-03-01','2012-03-10','2012-03-01','2012-03-02');
    SELECT dbo.fun_GetTimeSlotDays('2012-03-01','2012-03-10','2012-03-10','2012-03-11');
    SELECT dbo.fun_GetTimeSlotDays('2012-03-01','2012-03-10','2012-03-11','2012-03-11');

    测试结果:

  • 相关阅读:
    『转』QueryPerformanceFrequency()
    『转』C++中虚析构函数的作用
    存储过程的优缺点
    一个工作7年的软件工程师的总结(收藏)
    存储过程分页算法(收藏)
    Ajax原理(收藏)
    七大秘籍成就职场王者(收藏)
    视图的优缺点
    SQL索引全攻略
    .aspx、MasterPage、.ascx加载顺序
  • 原文地址:https://www.cnblogs.com/dataadapter/p/2597085.html
Copyright © 2011-2022 走看看