SSRS中mmddyyyy格式字符串转日期字段的解决方案求助
SSRS中mmddyyyy格式字符串转日期的可行方案
方案1:SSRS表达式手动解析生成日期
CDate函数依赖系统区域设置,无法直接识别无分隔符的mmddyyyy格式,可通过字符串拆分+DateSerial函数构建日期,不受区域影响:
DateSerial( CInt(Mid(Fields!LocalTXNDate.Value, 5, 4)), // 提取年份(第5位开始的4个字符) CInt(Mid(Fields!LocalTXNDate.Value, 1, 2)), // 提取月份(前2位) CInt(Mid(Fields!LocalTXNDate.Value, 3, 2)) // 提取日期(第3位开始的2个字符) )
方案2:数据源层面提前转换(推荐)
如果使用SQL Server作为数据源,直接在查询中将字符串转成日期字段,避免SSRS端的转换风险:
-- 先给无分隔符的字符串插入斜杠,再转成日期 SELECT CONVERT(date, STUFF(STUFF(LocalTXNDate, 3, 0, '/'), 6, 0, '/'), 101) AS LocalTXNDate FROM YourTableName
查询返回的直接是日期类型,SSRS可直接使用,无需额外转换。
方案3:增加异常处理兼容无效值
如果数据中存在格式不正确的字符串,可先判断有效性再转换,避免报错:
IIF( IsDate(Mid(Fields!LocalTXNDate.Value,1,2) & "/" & Mid(Fields!LocalTXNDate.Value,3,2) & "/" & Mid(Fields!LocalTXNDate.Value,5,4)), CDate(Mid(Fields!LocalTXNDate.Value,1,2) & "/" & Mid(Fields!LocalTXNDate.Value,3,2) & "/" & Mid(Fields!LocalTXNDate.Value,5,4)), Nothing -- 无效值返回空 )
内容的提问来源于stack exchange,提问作者ASharma7
相关产品推荐
相关产品推荐

