You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用EOMONTH DAX函数获取ISO月份的最后一日?

用DAX的EOMONTH函数获取自定义ISO月份的最后一日

首先明确:EOMONTH本身是基于公历自然月返回最后一天的函数,而你说的ISO月份(通常是企业自定义的会计/业务月份)起止日期不固定,没法直接用EOMONTH一步得到结果,得结合你的ISO月份规则,把EOMONTH和其他DAX函数配合起来用。下面分两种常见场景举例说明:

场景1:ISO月份固定按「每月X日起,下月X-1日止」

比如你的ISO月份是每月26日到下月25日,要计算任意日期所属ISO月份的最后一天:

先判断当前日期是否在ISO月份的后半段(即>=当月26日),再结合EOMONTH处理跨年/跨月的日期判断:

ISO月份最后一日 = 
VAR 当前日期 = [日期列]
VAR ISO起始日 = 26 // 替换成你的ISO月份实际起始日
VAR ISO结束日偏移 = ISO起始日 - 1 // 即对应ISO月份的结束日
RETURN
IF(
    DAY(当前日期) >= ISO起始日,
    // 属于下一个ISO月,结束日是下月的ISO结束日偏移
    DATE(YEAR(EOMONTH(当前日期, 0)), MONTH(EOMONTH(当前日期, 0)) + 1, ISO结束日偏移),
    // 属于当前ISO月,结束日是当月的ISO结束日偏移
    DATE(YEAR(当前日期), MONTH(当前日期), ISO结束日偏移)
)

这里用EOMONTH(当前日期,0)是为了快速获取当前公历月的最后一天,进而稳妥地推导下月日期,避免手动处理12月转次年1月这类跨年份的麻烦。

场景2:ISO月份基于周规则(比如每月第N个工作日/周末结束)

如果你的ISO月份是基于周的(比如每月最后一个周五结束),EOMONTH可以用来先定位当前公历月的终点,再调整到符合规则的结束日:

ISO月份最后一日 = 
VAR 当前日期 = [日期列]
VAR 公历月最后一天 = EOMONTH(当前日期, 0)
VAR 最后一天周几 = WEEKDAY(公历月最后一天, 2) // 参数2代表周一=1,周日=7
// 计算最后一个周五:如果最后一天是周五直接用,否则往前推对应天数
RETURN
公历月最后一天 - IF(最后一天周几 >=5, 最后一天周几 -5, 最后一天周几 + 2)

这里EOMONTH的作用是快速拿到公历自然月的锚点,再基于这个锚点结合周规则调整到目标结束日。

核心思路

不管你的ISO月份规则是什么,EOMONTH的价值是帮你快速获取公历自然月的锚点日期(当月或前后N月的最后一天),再基于这个锚点,结合你的ISO月份起止规则(固定日、周规则等),用DATE、DAY、WEEKDAY等函数调整到最终的ISO月份最后一日。

内容的提问来源于stack exchange,提问作者variable

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 22:20:59