在sql2005数据库中有一表数据如下:
  column1    column2    column3   column4
   aaa         111      2009-7-1  2009-8-1
   bbb         xxx      2009-9-1  2009-11-30
   ccc         ddd      2009-12-1  null(当前)
 现有一查询条件 2009-10
 我想查出   column3<=2009-10<=column4的数据 ,
 如果是2009-10,那么  
   bbb         xxx      2009-9-1  2009-11-30  满足条件 像这样的SQL要怎么写?

解决方案 »

  1.   

    SELECT * FROM TB WHERE CONVERT(VARCHAR(7),COLUMN3,120)<='2009-10' AND '2009-10' <=CONVERT(VARCHAR(7),COLUMN4,120)
      

  2.   

    select * from tb where '2009-10' between convert(varchar(7),column3,120) and convert(varchar(7),isnull(column4,getdate()),120)
      

  3.   

    SELECT * FROM TAB
    WHERE column3  <= '2009-10-31 23:59:59'
    AND column4 >= '2009-10-01'
      

  4.   

    select * 
    from tb
    where datediff(month,isnull(column3,getdate()),'2009-10-01')>=0
    and  datediff(month,'2009-10-01',isnull(column4,getdate()))>=0
      

  5.   

    create table tb(column1 varchar(10) , column2 varchar(10), column3 datetime, column4 datetime)
    insert into tb values('aaa' , '111' , '2009-7-1' , '2009-8-1') 
    insert into tb values('bbb' , 'xxx' , '2009-9-1' , '2009-11-30') 
    insert into tb values('ccc' , 'ddd' , '2009-12-1', null)
    goselect * from tb where '2009-10' between convert(varchar(7),column3,120) and convert(varchar(7),isnull(column4,getdate()),120) drop table tb/*
    column1    column2    column3                                                column4                                                
    ---------- ---------- ------------------------------------------------------ ------------------------------------------------------ 
    bbb        xxx        2009-09-01 00:00:00.000                                2009-11-30 00:00:00.000(所影响的行数为 1 行)
    */
      

  6.   

    declare @time datetime
    set @time='2009-10'
    select
     *
    from
     tb 
    where
     convert(varchar(7),column3,120)<=@time and @time<=convert(varchar(7),column4,120)
      

  7.   

    把你的时间串做为一个变量带入.create table tb(column1 varchar(10) , column2 varchar(10), column3 datetime, column4 datetime)
    insert into tb values('aaa' , '111' , '2009-7-1' , '2009-8-1') 
    insert into tb values('bbb' , 'xxx' , '2009-9-1' , '2009-11-30') 
    insert into tb values('ccc' , 'ddd' , '2009-12-1', null)
    godeclare @dt as varchar(7)set @dt = '2009-10'
    select * from tb where @dt between convert(varchar(7),column3,120) and convert(varchar(7),isnull(column4,getdate()),120) 
    /*
    column1    column2    column3                                                column4                                                
    ---------- ---------- ------------------------------------------------------ ------------------------------------------------------ 
    bbb        xxx        2009-09-01 00:00:00.000                                2009-11-30 00:00:00.000(所影响的行数为 1 行)
    */set @dt = '2009-12'
    select * from tb where @dt between convert(varchar(7),column3,120) and convert(varchar(7),isnull(column4,getdate()),120) 
    /*
    column1    column2    column3                                                column4                                                
    ---------- ---------- ------------------------------------------------------ ------------------------------------------------------ 
    ccc        ddd        2009-12-01 00:00:00.000                                NULL(所影响的行数为 1 行)
    */drop table tb
      

  8.   

    create table tb(column1 nvarchar(10),column2 nvarchar(10),column3 nvarchar(10),column4 nvarchar(10))
    insert into tb values('aaa','111','2009-7-1','2009-8-1')
    insert into tb values('bbb','xxx','2009-9-1','2009-11-30')
    insert into tb values('ccc','ddd','2009-12-1',null)
    --10月                  
    select * 
    from tb
    where datediff(month,isnull(column3,getdate()),'2009-10-01')>=0
    and  datediff(month,'2009-10-01',isnull(column4,getdate()))>=0column1    column2    column3    column4
    ---------- ---------- ---------- ----------
    bbb        xxx        2009-9-1   2009-11-30(1 行受影响)
    --12月
    select * 
    from tb
    where datediff(month,isnull(column3,getdate()),'2009-12-01')>=0
    and  datediff(month,'2009-12-01',isnull(column4,getdate()))>=0
    column1    column2    column3    column4
    ---------- ---------- ---------- ----------
    ccc        ddd        2009-12-1  NULL(1 行受影响)
      

  9.   

    column3 <=2009-10 <=column4没看懂。