我需要统计当月发票,如输入2001-03-16,函数给出,2001-03-01,2001-03-31,需要知道sql中between的写法

解决方案 »

  1.   

    思路:得到本月第一天,加一个月,减一天。
    declare @my_year int
    declare @my_month int
    declare @first_day datetime
    declare @last_day  datetime
    select  @my_month=datepart(month,convert(datetime,'2001-03-16'))
    select  @my_year=datepart(year,convert(datetime,'2001-03-16'))
    select  @first_day=convert(datetime,convert(char(4),@my_year)+'/'+convert(char(2),@my_month)+'/'+'1')
    select  @last_day=dateadd(day,-1,dateadd(month,1,@first_day))
      

  2.   

    这里有一个自定义函数其功能和vfp的GetLastDayOfMonth相似
    CREATE FUNCTION dbo.GetLastDayOfMonth (@inputdate datetime)  
    RETURNS datetime AS  
    BEGIN
    declare @returndate datetime
    declare @intdiffday int
    select @intdiffday = datediff(day,@inputdate,dateadd(month,1,@inputdate))
    select @returndate = convert(datetime,left(convert(char(8),@inputdate,112),6) + str(@intdiffday,2),112)
    return (@returndate)
    END
      

  3.   

    这里有一个自定义函数其功能和vfp的GetLastDayOfMonth相似
    CREATE FUNCTION dbo.GetLastDayOfMonth (@inputdate datetime)  
    RETURNS datetime AS  
    BEGIN
    declare @returndate datetime
    declare @intdiffday int
    select @intdiffday = datediff(day,@inputdate,dateadd(month,1,@inputdate))
    select @returndate = convert(datetime,left(convert(char(8),@inputdate,112),6) + str(@intdiffday,2),112)
    return (@returndate)
    END