基于服务日期列的 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]
我需要根据服务日期列创建月开始日期和月结束日期列。
如果服务日期是当前月份,则月末日期应为今天。
例如:
如果服务日期为“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]