【问题标题】:Month Name and Last date of each month for previous 3 months in sqlsql中前3个月每月的月份名称和最后日期
【发布时间】:2020-01-05 09:00:21
【问题描述】:

我正在分析前 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   year
Aug     2019
Jul     2019
Jun     2019

---预期的

month EOM_Date    year
Aug   2019-08-31  2019
Jul   2019-07-31  2019
Jun   2019-06-30  2019

【问题讨论】:

  • 对于 sql server(您似乎正在使用),您可以使用 EOMONTH
  • 您使用的是哪个 dbms? (使用了几个产品特定的功能。)

标签: sql sql-server


【解决方案1】:

您可以使用SQL Server EOMONTH() function 计算一个月的最后一天。

考虑:

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;

【讨论】:

  • 欢迎@EveLitha!如果我的回答正确回答了您的问题,请点击绿色复选标志accept it...谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多