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

在SSAS中使用DAX将yyyyMMddhhmmss格式转换为日期时间

在SSAS中使用DAX将yyyyMMddhhmmss格式转换为日期时间格式

场景1:原列是文本类型

如果你的源列是文本格式的yyyyMMddhhmmss(比如"20240520143025"),可以通过拆分日期、时间部分后合并的方式转换:

转换后的日期时间 = 
VAR 日期段 = LEFT('你的表名'[原格式列], 8)
VAR 时间段 = RIGHT('你的表名'[原格式列], 6)
VAR 日期值 = DATE(LEFT(日期段, 4), MID(日期段, 5, 2), RIGHT(日期段, 2))
VAR 时间值 = TIME(LEFT(时间段, 2), MID(时间段, 3, 2), RIGHT(时间段, 2))
RETURN 日期值 + 时间值

逻辑说明:

  • LEFT(原列,8)提取前8位的yyyyMMdd日期部分,RIGHT(原列,6)提取后6位的hhmmss时间部分
  • DATE()函数将日期段拆分为年(前4位)、月(中间2位)、日(后2位)
  • TIME()函数将时间段拆分为时(前2位)、分(中间2位)、秒(后2位)
  • 日期和时间值相加得到完整的日期时间类型结果

场景2:原列是数值类型

如果源列是数值格式的yyyyMMddhhmmss(比如20240520143025),需要先将数值转换为固定12位的文本,避免前导零丢失,再执行转换:

转换后的日期时间 = 
VAR 文本化值 = FORMAT('你的表名'[原格式列], "000000000000")
VAR 日期段 = LEFT(文本化值, 8)
VAR 时间段 = RIGHT(文本化值, 6)
VAR 日期值 = DATE(LEFT(日期段, 4), MID(日期段, 5, 2), RIGHT(日期段, 2))
VAR 时间值 = TIME(LEFT(时间段, 2), MID(时间段, 3, 2), RIGHT(时间段, 2))
RETURN 日期值 + 时间值

逻辑说明:

  • FORMAT(原列, "000000000000")将数值强制转换为12位文本,确保像20240102030405这种带前导零的月份/日期不会丢失格式
  • 后续拆分、转换逻辑和文本类型场景完全一致

使用提示

  • 上述表达式适用于计算列,直接在SSAS表格模型中新建计算列即可使用
  • 如果是度量值,只需根据上下文调整表和列的引用,核心逻辑保持不变

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 05:42:18