费话不说,直接上代码
SQL 代码:
View Code
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[fun_GetTimeSlotDays]'))DROP FUNCTION [dbo].fun_GetTimeSlotDaysGO-- =============================================-- Author:-- 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;ENDGO 判断两个时间断是否有交叉,如果有则返回1,否则返回0>
测试代码:
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');
测试结果: