DAX创建日期表时日期与午夜00:00时间相加不生效问题
问题原因
你当前代码的问题出在Visual Date列的计算逻辑:FORMAT([Date],"dd/mm/yy")输出的是文本类型,直接和时间类型相加时会触发DAX隐式转换。当时间为00:00:00(对应数值为0)时,文本加0的运算结果只会保留原日期文本,不会携带时间部分,所以就出现了你看到的午夜时段不显示时间的问题。
另外你当前的格式符使用也有错误:FORMAT里的小写mm代表分钟,代表月份需要用大写MM,后续配置显示格式时需要注意区分。
修改方案
1. 调整DAX代码
优先生成原生日期时间类型的列,再设置显示格式,兼容性更好:
Date Selection = ADDCOLUMNS ( CROSSJOIN( CALENDAR ( MIN ( 'Date'[Date] ), MAX ( 'Date'[Date] )), SELECTCOLUMNS(GENERATESERIES(0,23.5,.5),"Time",TIME([Value],([value]-INT([value]))*60,0)) ), -- 先合并为原生 datetime 类型,不要提前转文本 "Visual Date", [Date] + [Time], -- 如果需要文本格式的固定显示值,可以额外加这一列 "Visual Date Text", FORMAT([Date] + [Time], "dd/MM/yyyy HH:MM:SS"), "Order By", FORMAT([Date],"yyyy") & "/" & FORMAT([Date],"MM"), "Type", "Half Hourly", "Order", 5 )
2. 配置列显示格式
如果你用的是Power BI/SSAS等工具,选中Visual Date列,在列属性面板将数据类型设置为「日期/时间」,自定义显示格式为dd/MM/yyyy HH:MM:SS即可,所有时段(包括午夜0点)都会正常显示完整的日期时间格式。
内容的提问来源于stack exchange,提问作者jcoke
相关产品推荐
相关产品推荐

