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');

測試結果:

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM