在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
相关产品推荐
相关产品推荐

