基于服务日期列的 YTD 月份开始和结束日期

YTD Month Start and End Dates based on the Service Date Column

我需要根据服务日期列创建月开始日期月结束日期列。

如果服务日期是当前月份,则月末日期应为今天。

例如:

如果服务日期为“2022-02-14”,则与该日期关联的月开始日期和月结束日期为“2022-01-01”和“2022-02-28”。

但是,如果服务日期为“2022-04-07”(当前月份),则与该日期关联的月开始日期和月结束日期应为“2022-04-01”和“2022-04-11” '(今天的日期)。

每月的常规开始和结束日期:

CAST(DATEADD(month, DATEDIFF(month, 0, @ServiceDate), 0) AS DATE) AS [Month Start Date],
CAST(EOMONTH(@ServiceDate) AS DATE) AS [Month End Date],

您已经想通了每月第一天的逻辑。对于月末,如果是当月,请尝试 return 今天的日期。否则,return @ServiceDate 月份的最后一天

SELECT CAST(DATEADD(month, DATEDIFF(month, 0, @ServiceDate), 0) AS DATE) AS [Month Start Date]
      , CASE WHEN dateDiff(month, @ServiceDate, getDate()) = 0 THEN CAST(getDate() AS DATE) 
             ELSE CAST(EOMONTH(@ServiceDate) AS DATE) 
        END AS [Month End Date]