将现有DATE格式替换为SSRS表达式中的另一种格式

时间:2014-04-10 13:25:23

标签: sql regex date visual-studio-2008 reporting-services

我有一个包含 TEST 列的表,其中包含许多值:

TEST

2014-04-02
2014-04-03
2014-04-04
WEEKLY TOTAL
PRIOR WEEK
12 WEEK

如何使用IIF语句编写表达式,如果该行包含日期,则将日期更改为其他格式?

例如:

第一行有2014-04-02(yyyy-mm-dd),应更改为02-Apr(dd-mmm) 最后一行有12 week,不应该触及,因为它不是日期

2 个答案:

答案 0 :(得分:4)

解决方案1:

=iif(isDate(Fields!Test.Value)
     ,FORMAT(
            CDATE(iif(isDate(Fields!Test.Value), Fields!Test.Value, Nothing))
           , "dd-MMM"
           ) 
   ,Fields!Test.Value)

解决方案2:
使用CASE WHEN

在SQL本身中处理它

答案 1 :(得分:1)

如果您的所有日期都有' - ',那么您的所有文字都没有' - ':

=IIF(Fields!TEST.Value like "*-*", FORMAT(CDATE(Fields!TEST.Value), "dd-MMM")  ,Fields!TEST.value)

未经测试,但应该有效。编辑返回实际日期。

编辑:经过一些更多的实验,我突然意识到你想要的东西会导致SSRS列的类型不一致(日期/字符串),我认为不可能同时拥有字符串类型和日期同一列中的类型。

我的错误是没有早点意识到这一点。

要返回实际日期,您需要清理/过滤数据。