dyear = year(dateadd("m",0,now()))
dmonth = month(dateadd("m",0,now()))
downlimit = CDate(dyear & "-" & dmonth & "-" & "1")'某月的每一天
uplimit = dateadd("m",1,downlimit)-1 '某月的最后一天
接下来我想就不用我说了吧?

解决方案 »

  1.   

    downlimit = CDate(dyear & "-" & dmonth & "-" & "1")这句写错了,应该是:
    downlimit = dyear & "-" & dmonth & "-" & "1"
      

  2.   

    你的SQL是指SQL SERVER吧,盖茨真不要脸,盗用专用名词 :)
    一个月中的天数和年份有关,所以我的做法是月份加1再加去一天,得到的就是该月的天数。
    下面是用ORACLE PL/SQL给出的代码,你把它翻译成T-SQL的就行了--Y YEAR(NUMBER)
    --M MONTH(NUMBER)
    SELECT TO_NUMBER(TO_CHAR
                     (TO_DATE((TO_CHAR(DECODE(M, 12, Y+1, Y), '0000') || '-' 
                              || TO_CHAR(DECODE(M, 12, 1, M+1),'00') || '-01', 
                               'YYYY-MM-DD') - 1), 'MM'))
      FROM DUAL;
      

  3.   

    My God!那么复杂阿!我还以为只用一个函数就行了呢。我试了一下没成功,单弄明白各位大虾给我出的点子就很费事了,其实问题也没那么复杂,就举个例吧:2001年8 月份的天数我怎么得到呢?
      

  4.   

    1、求当前月的一号
        datFirst = CDate(DatePart("yyyy", datCurrent) & "-" _
                 & DatePart("m", datCurrent) & "-01")
    2、通过当前月的一号得到上月一号 DateAdd("m", 1, datFirst),两个日期求间隔
       intDays = DateDiff("d", datFirst, DateAdd("m", 1, datFirst))
      

  5.   

    SQL好像不识别Cdate函数呢?在SQL中我怎样将一个字符串转换成日期型的呢?如字符串'2001-9-1'转换成Datetime型的呢?
      

  6.   

    使用Convert或Cast转化:
    declare @iDays int
    declare @dt varchar(50)
    set @dt='2001-2-12'select @iDays=day(dateadd(d,-Day(dateadd(m,1,convert(datetime,@dt))),dateadd(m,1,convert(datetime,@dt))))
    print @iDays
      

  7.   

    用convert的函数果然得到预期效果,可现在又出来一个问题了,请看下面:
    现有表结构如下:
        n_year    n_month   number
         2001        8       21
         2001        8       41
         2001        9       30
    怎样得到下面的结果呢?
       n_month    number   lever
          8         62      2
          9         30      1
    其中:
         lever 为每月汇总后的number与该月的天数之比。
    请问该怎么写SQL语句呢?最好是一句话就能出结果?
      

  8.   

    在oracle中函数last(d)返回包含日期d的月份的最后一天的日期,你只需用它减去该月第一
    天的日期,再加1,就可以得出该月的总天数了,例如:SQL> select last_day(to_date('2001-2-1','yyyy-mm-dd'))-to_date('2001-2-1','yyyy-mm-dd')+1 total_days from dual;TOTAL_DAYS
    ----------
            28
      

  9.   

    你的结果中必须包含n_year字段,因为二月份的天数是不定的