select * from test_date where D_date=(select max(D_date) from test_date where convet(char(10),D_date,120)<'2005-10-1')

解决方案 »

  1.   

    select * from test_date where D_date=(select max(D_date) from test_date where convert(char(10),D_date,120)<'2005-10-1')
      

  2.   

    declare @date datetime
    set @date='2005-10-1'
    select * from test_date a  where  not exists(select 1 from test_date where d_date<@date and d_date>a.d_date) and d_date<@date
      

  3.   

    select top 1 * from tb where d_date<'2005-10-1' order by d_date desc
      

  4.   

    --写的麻烦了,如果D_date是smalldatetime类型
    select * from test_date where D_date=(select max(D_date) from test_date where D_date<'2005-10-1')