SSRS矩阵列头按hh:mm tt格式化异常,原因是什么?
SSRS矩阵列头格式化异常问题排查
问题描述
我有一个SSRS矩阵,其中“一天中的小时”为整数列(取值范围6至17)。希望将这些值以hh:mm tt格式显示,同时保留原始整数的排序顺序。已设置工具提示查看格式表达式使用的值,显示正确(如1/1/2023 6:00:00 AM),但格式化后的列头却将小时值同时放在小时和分钟位(如6:06 AM)。
原因分析
出现这个问题的核心原因是你在时间转换表达式中错误地重复使用了小时字段值。
从属性设置来看,你使用的时间生成表达式是=TimeSerial(Fields!HourOfDay.Value, Fields!HourOfDay.Value, 0)——这里把小时字段的值同时传给了TimeSerial的「小时参数」和「分钟参数」,最终生成的时间是「X点X分」,所以经过hh:mm tt格式化后,就会出现X:XX AM/PM的错误显示。
解决方法
修正TimeSerial表达式,仅将小时值传入第一个参数,分钟和秒参数设为0:
=TimeSerial(Fields!HourOfDay.Value, 0, 0)
修改后生成的是标准整点时间(如1/1/2023 6:00:00 AM),再通过hh:mm tt格式就能正确显示为6:00 AM,同时原始整数列的排序顺序也会保留。
内容的提问来源于stack exchange,提问作者crichavin
相关产品推荐
相关产品推荐

