表是这样的:产品表(品名,启用日期,截止日期)品名   启用日期   截止日期
a      
b      2012/1/1   2012/10/1
b      2012/10/2  
c实现:
2012/10/1(含)日之前显示启用日期为2012/1/1的b产品品名   启用日期   截止日期
a      
b      2012/1/1   2012/10/1
c2012/10/2(含)日之后显示启用日期为2012/10/2的b产品品名   启用日期   截止日期
a      
b      2012/10/2  
c不知我说明白了没!

解决方案 »

  1.   

    这么说吧,单价表,同样品名在不同时间单价不同,如下:品名   单价    启用日期     截止日期
    a       1      2012/1/1     2012/3/31
    a       1.5    2012/4/1   
    b       2      2012/5/1     2012/5/31
    b       1.8    2012/6/1
    c       5     
    d       4根据启用日期和截止日期查询出当前时间的单价
      

  2.   

    --c,d没时间的要展现不?
    create table tb (品名 nvarchar(10), 单价 decimal(18,2), 启用日期 datetime ,截止日期 datetime)
    insert into tb values ('a', 1 ,'2012/1/1', '2012/3/31')
    insert into tb values ('a', 1.5 ,'2012/4/1',null)
    insert into tb values ('b', 2 ,'2012/5/1','2012/5/31')
    insert into tb values ('b', 1.8 ,'2012/6/1',null)
    insert into tb values ('c', null ,null,null)
    select 品名,单价 from tb
    where GETDATE() between 启用日期 and isnull(截止日期,GETDATE())
      

  3.   

    select 品名,单价 from tb
    where GETDATE() between isnull(启用日期,GETDATE()) and isnull(截止日期,GETDATE())
      

  4.   


    非常感谢,实现了,不过发现了一个问题,当地一个单价截止日期和第二个单价启用日期相差一天时有点问题  如:
    a 1    2012/1/1   2012/9/20
    a 1.5  2012/9/21   这样a就不显示了,这是因为getdate()日期是带时间的:2012-09-20 09:27:29:923,这个时间大于截止日期2012-09-20,所以a就不显示了。
      

  5.   

    转化下就行了啊,convert(nvarchar(10),getdate(),120)