date - 在 SSRS 中显示空白值 ("") 作为日期

标签 date reporting-services null

我有包含日期​​时间或空白值的 DiscontinuedDate 列。我用了表达方式

FormatDateTime(Fields!DiscontinuedDate.Value, DateFormat.ShortDate)

要将日期时间显示为日期,但当值为空时,它显示为错误,并显示以下消息“从字符串“转换为类型“日期”无效。”

所以我一直在尝试使用如下所示的 IIF 表达式:

=IIF(Fields!DiscontinuedDate.Value is "", "", FormatDateTime(Fields!DiscontinuedDate.Value, DateFormat.ShortDate))

我尝试了一些变体,但它们都返回相同的错误。有什么想法吗?

谢谢,

亚当

最佳答案

你的问题是 SSRS IIf 表达式不会短路,所以只要你有一个空白字符串,你的代码仍然会尝试 FormatDateTime 转换,所以你得到这个即使你的支票也有错误。

您可以添加一些逻辑来停止在 FormatDateTime 表达式中评估空字符串,方法是使用另一个 IIf 将其更改为 NULL值,不会失败:

=IIF(Fields!DiscontinuedDate.Value = ""
    , ""
    , FormatDateTime(IIf(Fields!DiscontinuedDate.Value = ""
            , Nothing
            , Fields!DiscontinuedDate.Value)
        , DateFormat.ShortDate))

这解决了您的直接问题,但假设底层数据是基于文本的,我还建议查看您的底层数据并使用显式 DateTime 类型数据类型而不是字符串,以在尽可能低的级别防止这些数据。

关于date - 在 SSRS 中显示空白值 ("") 作为日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18915970/

相关文章:

python - 如何在 Anaconda 中安装 nltk_contrib

sql-server - 如何查询 T-SQL 以获得每个 "Top 10 ' 的 'y' x'

ios - 处理零?在 UITableViewCell 中

java - 如何将文件最后修改的时间戳转换为日期?

根据R中的另一列删除重复日期

php - 如何根据字符串日期计算年龄?

sql-server - 从 SSRS 运行 SSIS 作业

excel - 导出到 Excel 时,SSRS 不支持 CanGrow 属性

javascript - 在 JavaScript 中检查 null 工作除了零

if-statement - 检查 'nil' 不起作用