sql中前3个月的月份名称和每个月的最后日期

sql中前3个月的月份名称和每个月的最后日期,sql,sql-server,Sql,Sql Server,我正在分析前3个月(不包括当前月份)的客户交易,我想获得前3个月的月份名称以及每3个月的最后日期 WITH R(N) AS ( SELECT 1 UNION ALL SELECT N+1 FROM R WHERE N < 3 ) SELECT LEFT(DATENAME(MONTH,DATEADD(MONTH,-N,GETDATE())),3) AS [month], DATEPART(YEAR,DATEADD(MONTH,-N,GETDATE())) AS [

我正在分析前3个月(不包括当前月份)的客户交易,我想获得前3个月的月份名称以及每3个月的最后日期

WITH R(N) AS (
    SELECT 1 UNION ALL SELECT N+1 FROM R WHERE N < 3
)
SELECT 
    LEFT(DATENAME(MONTH,DATEADD(MONTH,-N,GETDATE())),3) AS [month], 
    DATEPART(YEAR,DATEADD(MONTH,-N,GETDATE())) AS [year]
FROM R;
--期望

month EOM_Date    year
Aug   2019-08-31  2019
Jul   2019-07-31  2019
Jun   2019-06-30  2019
您可以使用来计算一个月的最后一天

考虑:

WITH R(N) AS (
    SELECT 1 UNION ALL SELECT N+1 FROM R WHERE N < 3
)
SELECT 
    LEFT(DATENAME(MONTH,DATEADD(MONTH,-N,GETDATE())),3) AS [month], 
    EOMONTH(GETDATE(), -N) AS [EOM_DATE],
    DATEPART(YEAR,DATEADD(MONTH,-N,GETDATE())) AS [year]
FROM R;

对于您似乎正在使用的sql server,您可以使用您正在使用的dbms?使用了几种特定于产品的功能。欢迎@EveLitha!如果我的回答正确回答了你的问题,请点击绿色的复选标记。。。谢谢
WITH R(N) AS (
    SELECT 1 UNION ALL SELECT N+1 FROM R WHERE N < 3
)
SELECT 
    LEFT(DATENAME(MONTH,DATEADD(MONTH,-N,GETDATE())),3) AS [month], 
    EOMONTH(GETDATE(), -N) AS [EOM_DATE],
    DATEPART(YEAR,DATEADD(MONTH,-N,GETDATE())) AS [year]
FROM R;