如表 kcmxpm shl xq
消炎片 526 2012-10-10
感冒片 100 2010-11-25
妇科药 5525 2012-05-31
膏药 75 2011-01-10
注射剂 9522 2011-03-13要求:以当前日期为准,求近效期180天内的,达到如下效果感冒片 100 2010-11-25
膏药 75 2011-01-10
注射剂 9522 2011-03-13
消炎片 526 2012-10-10
感冒片 100 2010-11-25
妇科药 5525 2012-05-31
膏药 75 2011-01-10
注射剂 9522 2011-03-13要求:以当前日期为准,求近效期180天内的,达到如下效果感冒片 100 2010-11-25
膏药 75 2011-01-10
注射剂 9522 2011-03-13
-- 测试数据 --
--------------
if object_id('tempdb.dbo.#kcmx') is not null drop table #kcmx
create table #kcmx(pm varchar(8), shl int, xq datetime)
insert into #kcmx
select '消炎片', 526, '2012-10-10' union all
select '感冒片', 100, '2010-11-25' union all
select '妇科药', 5525, '2012-05-31' union all
select '膏药', 75, '2011-01-10' union all
select '注射剂', 9522, '2011-03-13'select * from #kcmx where datediff(day, getdate(), xq) between 0 and 180/*
pm shl xq
-------- ----------- -----------------------
感冒片 100 2010-11-25 00:00:00.000
膏药 75 2011-01-10 00:00:00.000
注射剂 9522 2011-03-13 00:00:00.000(3 行受影响)*/
这个在测试数据好用,但我放到我数据库实际情况就不好用了。
kevinwen0413的select * from kcmx where abs(datediff(dd,xq,getdate())) <=180
好用。
这个也行