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里那一长串。说的是什么谁帮我解释一下谢谢

解决方案 »

  1.   

    帮你顶了。给我1分就好。THANKS
      

  2.   

    这句话是在C#里,用字符串组成一句SQL语句, 其中WHERE里包含两个条件:
    第一个条件是Datediff(天数, 今天, 根据今年的年份, Vfield的月份, Vfield的日组成的日期) <= sday
    第二个条件是Datediff(天数, 今天, 根据今年的年份, Vfield的月份, Vfield的日组成的日期) >= 0譬如今天是4月6号, 凡是Vfield的月日是4月6号以后的, 但是距今不超过sday的, 都是有效的记录.
      

  3.   

    楼主可以自己在SQL SERVER MANAGEMENTSTUDIO里试验.
    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)
      

  4.   

    查查SQL的日期函数就知道了。
      

  5.   

    查查SQL的日期函数就知道了。