没有,不过也不用了,就在程序里判断好了
TDate date1;     try
       {
       date1=StrToDateTime(edtextyearmonth+"/31");.//edtextyearmonth为年和月
       ShowMessage("31天")
       }
     catch(...)
     {
     try
       {
       date1=StrToDateTime(edtextyearmonth+"/30");.//edtextyearmonth为年和月
       ShowMessage("30天")
       }
     catch(...)
       {
         try
           {
       date1=StrToDateTime(edtextyearmonth+"/29");.//edtextyearmonth为年和月
       ShowMessage("29天")
           }
       catch(...)
           {
           try
            {
       date1=StrToDateTime(edtextyearmonth+"/29");.//edtextyearmonth为年和月
       ShowMessage("29天")
            }
            catch(...)
            {
            }
           }
       }
     }
}

解决方案 »

  1.   

    使用sql的datediff函数
    DATEDIFF ( datepart , startdate , enddate )
    datepart 参数使用daystartdate 为某年某月的第一天,enddate 为某年某月的下个月(或年)的第一天USE pubs
    GO
    SELECT DATEDIFF(day, pubdate, getdate()) AS no_of_days
    FROM titles
    GO
      

  2.   


    下面这个函数就可以了
    CREATE   FUNCTION 返回月天数(@YY CHAR(4), @MM CHAR(2))
    RETURNS INT
    AS
    BEGIN
      DECLARE @Riqi DATETIME,@I INT 
      SET @MM=CONVERT(CHAR(2),CONVERT(INT,@MM)+1)
      SET @Riqi = dateadd(day,-1,CONVERT(DATETIME,@YY+'-'+@MM+'-01'))
      SET @I =CAST(datepart(day,@Riqi) AS INT)
      return @I
    ENDselect dbo.返回月天数('2003','8')       结果31
    select dbo.返回月天数('2003','2')       结果28
      

  3.   

    CREATE FUNCTION 返回月天数(@YY CHAR(4), @MM CHAR(2))
    RETURNS INT
    AS
    BEGIN
    DECLARE @MyDate smalldatetime
    SET @MyDate = CAST(@YY + '-' + @MM + '-01' AS smalldatetime)
    RETURN 32 - Day(@MyDate + (32 - Day(@MyDate)))
    END
      

  4.   

    一条语句就行了吧.declare @年月 varchar(6)
    set @年月='200302'  --查询2003年2月有多少天
    select day(dateadd(month,1,@年月+'01')-1)
      

  5.   

    如果定义成函数,就用:create function f_getday(@年月 varchar(6))
    returns int
    as
    begin
    return(select day(dateadd(month,1,@年月+'01')-1))
    end
    go--调用
    select dbo.f_getday('200301'),dbo.f_getday('200302')--删除函数
    drop function f_getday
      

  6.   

    同意:
    declare @年月 varchar(6)
    set @年月='200302'  --查询2003年2月有多少天
    select day(dateadd(month,1,@年月+'01')-1)
      

  7.   


    DATEDIFF
    返回跨两个指定日期的日期和时间边界数。 语法
    DATEDIFF ( datepart , startdate , enddate ) 
    例如:求今年2月份有多少天
    declare @t smalldatetime
    select @t='2003-2-01'
    select datediff(day,@t,dateadd(Month,1,@t)) as 该月有
      

  8.   


    select day(dateadd(day,-1,dateadd(mm,1,'20030201')))
      

  9.   

    SELECT DATEDIFF(DY,CAST(YEAR(GETDATE()) AS VARCHAR(4))+'/01/01', CAST(YEAR(GETDATE())+1 AS VARCHAR(4)) + '/01/01')
    返回某年的天数
    ------------------------------
    select datediff(dd,'2003/5/1','2003/6/1')
    返回某月的天数