dSQL = "select * from tb_Stuffbusic where (datediff(day,getdate(),convert(Nvarchar(12),cast (cast (year(getdate()) as char(4))+'-'+ cast(month(" + Vfield + ") as char(2))+'-'+ cast (day(" + Vfield + ") as char(2)) as datetime),110))<=" + sday + ") and (datediff(day,getdate(),convert(Nvarchar(12),cast (cast (year(getdate()) as char(4))+'-'+ cast(month(" + Vfield + ") as char(2))+'-'+cast (day(" + Vfield + ") as char(2)) as datetime),110))>=0)";
主要是where里那一长串。说的是什么谁帮我解释一下谢谢
主要是where里那一长串。说的是什么谁帮我解释一下谢谢
第一个条件是Datediff(天数, 今天, 根据今年的年份, Vfield的月份, Vfield的日组成的日期) <= sday
第二个条件是Datediff(天数, 今天, 根据今年的年份, Vfield的月份, Vfield的日组成的日期) >= 0譬如今天是4月6号, 凡是Vfield的月日是4月6号以后的, 但是距今不超过sday的, 都是有效的记录.
declare @Vfield datetime
set @Vfield = '2006/06/01'
select convert(nvarchar(12), cast(cast(year(getdate()) as char(4))+'-'+cast(month(@Vfield) as char(2))+'-'+cast(day(@Vfield) as char(2)) as datetime), 110)select datediff(day, getdate(), convert(nvarchar(12), cast(cast(year(getdate()) as char(4))+'-'+cast(month(@Vfield) as char(2))+'-'+cast(day(@Vfield) as char(2)) as datetime), 110))结果:
------------
06-01-2009(1 row(s) affected)
-----------
56(1 row(s) affected)