日期:2014-05-18  浏览次数:20646 次

100分求助,一个比较难的时间段的判断问题
有一个表如下:
SCode StartDate EndDate
002044 2008-04-01 2008-04-30
002044 2008-06-01 2008-06-15
002044 2008-08-01 2008-08-15
如果给出一个两个时间如:s1=2008-06-16,s2=2008-06-30,或者是s1=2008-04-1,s2=2008-04-15,时间段也可能在2008-04-01之前,或2008-08-15之后,如何判断这个时间段是否已在数据库中?(数据库的最小时间段是半个月,以15号为分界判断之).
哪个高手能帮一下忙,或提供一个思路?先谢过了! 


------解决方案--------------------
需要使用临时表来实现.
------解决方案--------------------
select scode,sum(to_number(END_DATE)-to_number(START_DATE)) a into as_code,as_number from tablename where scode='xxx' and start_date>=as_start_date and end_date<=as_end_date
if as_number==(to_number(as_end_date)-to_number(as_start_date))
------解决方案--------------------
declare @d1 datetime,@d2 datetime
set @d1 = ..
set @d2 = ..
if exists(select 1 from ta where datediff(d,@d1,StartDate)= 0 and datediff(d,@d2,EndDate ) = 0 )
print 'yes'
else 
print 'No'