SQL group dates by month

前端 未结 2 892
予麋鹿
予麋鹿 2021-01-18 04:37

I have a query that returns expiration dates:

    SELECT ci.accountnumber
           , ci.accountname
           , cvu.ExpirationDate
      FROM dbo.clientin         


        
相关标签:
2条回答
  • 2021-01-18 04:42

    You can do something like this:

    e.g. how many units are due to expire in 2012:

    SELECT MONTH(cvu.ExpirationDate) AS Mnth, YEAR(cvu.ExpirationDate) AS Yr, 
        COUNT(*) AS DueToExpire
    FROM clientvehicleunit cvu
    WHERE cvu.ExpirationDate >= '20120101' AND cvu.ExpirationDate < '20130101'
    GROUP BY MONTH(cvu.ExpirationDate), YEAR(cvu.ExpirationDate)
    
    0 讨论(0)
  • 2021-01-18 04:45

    I need to return counts of how many units are due to expire within each month for a 12 month period.

    If you mean from the current month forward, then

    SELECT
        [YYYY.MM]    = CONVERT(varchar(7), cvu.ExpirationDate, 102),
        CountInMonth = COUNT(*)
    FROM dbo.clientinfo ci
    JOIN clientvehicleunit cvu ON ci.clientid = cvu.clientid
    WHERE cvu.ExpirationDate >= DATEADD(m, DATEDIFF(m,0,getdate()), 0)
      AND cvu.ExpirationDate <  DATEADD(m, DATEDIFF(m,0,getdate())+12, 0)
    GROUP BY CONVERT(varchar(7), cvu.ExpirationDate, 102)
    ORDER BY [YYYY.MM]
    

    Note: The period is printed in the form [YYYY.MM], e.g. 2011.01

    0 讨论(0)
提交回复
热议问题