我写  select 365- DATEDIFF(d,remdtime,GETDATE()),remdtime from T_Reminder   remdtime是生日这样出来的话remdtime是 2009年10.19 日 今天是23日 出来的结果是还有361天 应该是4天.应该怎么写呢 
remdtime是2010-4-20 的话应该是还有三天 出现是还有544天 这个函数C#怎么写呢??
谢谢了 或是 SQL直接能得出的..

解决方案 »

  1.   

    declare @dt datetime
    set @dt='1988-01-15'select datediff(dd,DATEADD(Year,DATEDIFF(Year,@dt,getdate()),@dt),getdate())/*
                
    ----------- 
    281(所影响的行数为 1 行)*/
      

  2.   

    declare @dt datetime
    set @dt='1988-10-19'   --换成10.19就是4天了select datediff(dd,DATEADD(Year,DATEDIFF(Year,@dt,getdate()),@dt),getdate())/*
                
                
    ----------- 
    4(所影响的行数为 1 行)*/
      

  3.   


    对哦,把两个参数换个位置,得到的是付数说明今年的生日已经过了,要是正,就还没过
    select datediff(dd,DATEADD(Year,getdate(),DATEDIFF(Year,remdtime,getdate()),remdtime),),remdtime from T_Reminder
      

  4.   

    C#DateTime d1 =new DateTime(2009,10,23,11,53,05);
            DateTime d2 =new DateTime(2009,11,1,20,16,35);
            TimeSpan d3 = d2.Subtract(d1);
            string reminder = "相差:"
            +d3.Days.ToString()+"天"
            +d3.Hours.ToString()+"小时"
            +d3.Minutes.ToString()+"分钟"
            +d3.Seconds.ToString()+"秒";
            Response.Write(reminder);
      

  5.   


    declare @day int 
    set @day=5--提早五天提醒select * from student 
    where dateadd(year,datediff(year,e_birthday,getdate()),e_birthday)
    between getdate() and dateadd(dd,@day,getdate())
      

  6.   

    谢谢大家 已经搞定
     
    select 
    case  when ((DATEDIFF(d,{ fn NOW() },CAST(LEFT(CAST(YEAR({ fn NOW() }) AS varchar(4))   + ' ' + CAST(RemdTime AS varchar(10)), 10) AS datetime)))) >0 then ((DATEDIFF(d,{ fn NOW() },CAST(LEFT(CAST(YEAR({ fn NOW() }) AS varchar(4))   + ' ' + CAST(RemdTime AS varchar(10)), 10) AS datetime)))) else( 365+((DATEDIFF(d,{ fn NOW() },CAST(LEFT(CAST(YEAR({ fn NOW() }) AS varchar(4))   + ' ' + CAST(RemdTime AS varchar(10)), 10) AS datetime)))))end  as lefts ,RemdTime
    FROM T_Reminder order by 1 asc是我脑子没转过来....本来想的是对的 呵呵