select * from 日期表 where convert(varchar(10),'2009-02-05 18:20:18',120) between 開始日期 and 結束日期
select * from 時間表 where convert(varchar(10),'2009-02-05 18:20:18',108) between 開始時間 and 結束時間

解决方案 »

  1.   

    declare @dt datetime
    set @dt='2009-02-05 18:20:18'if exists(select 1 from 日期表 where 开始日期<=@dt and 结束日期>@dt)
    and exists(select 1 from 时间表 where 开始时间<=convert(varchar(8),@dt,108) and 结束时间>=convert(varchar(8),@dt,108))
    print '范围内'
    else 
    print '范围外'
      

  2.   

    1、日期表 ID   开始日期          结束日期 
    01      2009-01-01      2009-01-05 
    01     2009-02-02      2009-02-09 
    01     2009-05-10      2009-05-15 
    02     2009-06-01      2009-06-102、时间表 ID      开始时间          结束时间 
    01      08:00:00          10:00:00 
    01     12:00:00          15:00:00 
    01     18:00:00          20:00:00 
    02     10:20:00          18:10:10
      

  3.   


    SELECT NEW_ID=IDENTITY(INT,1,1),* INTO #TB1 FROM 日期表
    SELECT NEW_ID=IDENTITY(INT,1,1),* INTO #TB2 FROM 时间表 
    SELECT T.ID,CONVERT(DATETIME,(T.开始日期+T1.开始时间)) AS TIMESTART,CONVERT(DATETIME,( T.结束日期 + T1.结束时间 ) ) AS TIMEEND FROM #TB1 T,#TB2 T1 WHERE T.NEW_ID=T1.NEW_ID AND T.ID=T1.ID将上面当成一个新表,再输入时间在那个范围之内就好了!!