select * from test_date where D_date=(select max(D_date) from test_date where convert(char(10),D_date,120)<'2005-10-1')
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
select top 1 * from tb where d_date<'2005-10-1' order by d_date desc
--写的麻烦了,如果D_date是smalldatetime类型 select * from test_date where D_date=(select max(D_date) from test_date where D_date<'2005-10-1')
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
select * from test_date where D_date=(select max(D_date) from test_date where D_date<'2005-10-1')