select 天数=DATEDIFF ( day , '2004-1-1' , getdate() ) +1

解决方案 »

  1.   

    2004 是变量,怎么把参数转换成日期型,在放到datediff中去啊
      

  2.   

    看看这样呢
    select 天数=DATEDIFF ( day , convert(varchar(4),year(getdate()))+'-1-1' , getdate() ) +1
      

  3.   

    而且,getdate()是值今天,如果我输入5,想看截止5月的天数久不对了啊
      

  4.   

    那你就不用getdate()了,用变量,日期格式的字符串就可以了。
      

  5.   

    print datediff(day,convert(varchar(5),'2004-5-1',120)+'1-1',convert(varchar(8),dateadd(month,1,'2004-5-1'),120)+'1')把这里的2004、5换成你要的年、月即可
      

  6.   

    declare @年 int,@月 int--测试1,结果:121
    select @年=2004,@月=5
    select 天数=datediff(day
    ,dateadd(year,@年-1900,'1900-1-1')
    ,case when year(getdate())=@年 and month(getdate())=@月 then getdate() 
    else dateadd(month,@月-1,dateadd(year,@年-1900,'1900-1-1')) end)--测试2,结果:212
    select @年=2004,@月=8
    select 天数=datediff(day
    ,dateadd(year,@年-1900,'1900-1-1')
    ,case when year(getdate())=@年 and month(getdate())<=@月 then getdate() 
    else dateadd(month,@月,dateadd(year,@年-1900,'1900-1-1'))-1 end)--测试3,结果:212
    select @年=2004,@月=7
    select 天数=datediff(day
    ,dateadd(year,@年-1900,'1900-1-1')
    ,case when year(getdate())=@年 and month(getdate())<=@月 then getdate() 
    else dateadd(month,@月,dateadd(year,@年-1900,'1900-1-1'))-1 end)
      

  7.   

    declare @year,@month
    if month(getdate())>=@month
            datediff(day,@year+'-1-1',@year+@month+?)
      else
            datediff(day,@year+'-1-1',getdate())
    怎么用sql语句表示啊
      

  8.   

    zjcxc(邹建) 厉害呀,这么快,佩服,那几个函数玩的飞转 呵呵,想你学习
    谢谢了,结贴