【问题标题】:SSRS Format date from YYYYMMDD to MM/DD/YYYYSSRS 格式日期从 YYYYMMDD 到 MM/DD/YYYY
【发布时间】:2015-02-13 00:30:42
【问题描述】:

当我运行报告时,日期以YYYYMMDD 格式显示,但我需要将其转换为MM/DD/YYYY 格式

例如: 20150213 - 期待结果02/13/2015

下面的表达式不起作用。有什么建议吗?

=Format(Fields!InstallDate0.Value,"MM/dd/yyyy")

【问题讨论】:

  • 从哪里出来?在提示或报告中?它怎么不工作?它会抛出错误吗?如果不是,结果如何?
  • 当我运行 SQL 查询时,结果显示例如“20150213”。当我将它添加到 SSRS 时显示相同的内容。没有错误。我需要将该格式转换为 2015 年 2 月 13 日。
  • @user3711442 你的问题解决了吗?

标签: sql-server-2008 reporting-services


【解决方案1】:

看起来InstallDate0 是一个字符串,而不是日期。先转换成日期,再格式化:

=Format(CDate(Fields!InstallDate0.Value), "MM/dd/yyyy")

【讨论】:

  • 在使用此表达式时,我在该列的所有记录中都收到 #Error。
  • 如果不先将字符串转换为 SQL 中的日期,则无法工作。许多在 SSRS 中寻求解决方案的问题是他们无法访问后端数据。
【解决方案2】:

该字段是作为DateTime 字段存储在数据库中,还是以其他形式存储?

我将假设它不是DateTime,而是一个整数或字符串。

假设您的列名为 InstallDate0,请更改您的查询以使用此表达式(我们将假设源表具有别名 T1):

InstallDate0 = CONVERT(datetime, CONVERT(varchar(8), T1.InstallDate0), 112)

这会将您的字符串(或整数)作为日期时间返回。您现在可以使用 SSRS 的格式化功能:

=Format(Fields!InstallDate0.Value,"MM/dd/yyyy")

【讨论】:

    【解决方案3】:

    你应该可以使用:

    =Format(Fields!InstallDate0.Value,"d")
    

    如果这不起作用,我的猜测是您将日期作为字符串带入报告中。您可以在 sql 查询中将 YYYYMMDD 格式化字符串转换为日期时间:

    cast(InstallDate0 as datetime)
    

    【讨论】:

    • =Format(Fields!InstallDate0.Value,"d") --- 所有这一切都是在该列的所有记录中放入“d”。 cast(IinstallDate0 as datetime) 在查询中也不起作用。
    • 我收到的错误是“从字符串转换日期和/或时间时转换失败。”
    • 你能提供你的sql查询吗?
    【解决方案4】:

    这对我有用 -

    Format(CDate(DateAdd(DateInterval.DayOfYear, 1, Now())), "MM/dd/yyyy")

    要求以 MM/dd/yyyy 格式获取当前日期 + 1。您可以将DateAdd(DateInterval.DayOfYear, 1, Now()) 替换为您的字段值。

    【讨论】:

    • 和第一个答案类似。我没有足够的声誉来发表评论或投票,因此发布为答案。
    【解决方案5】:

    我发现,您可以直接在单元格的设置中定义用户定义的设置,如下所示:

    MM'/'dd'/'yyy
    

    【讨论】:

      【解决方案6】:
      =CDATE(MID(Fields!LAST_UPD.Value,5,2) + "/" + Right(Fields!LAST_UPD.Value,2) + "/" + Left (Fields!LAST_UPD.Value,4))
      

      不是最漂亮的解决方案,但速度快且工作正常。

      【讨论】:

      • 就是这个!
      【解决方案7】:

      可能可以帮助某人的快速解决方案,在我的情况下,@ini_date 是一个参数,因此查询转换不适用......

      当日期是这种格式时 -> yyyymmdd,我“构造”了一个有效的日期字符串,用 right() mid() 和 left(),用斜杠连接它,然后将它转换为日期类型,所以它可以格式化。

      这是表达式>>

      ="Date: "&format(cdate((right(Parameters!ini_date.Value,2) &"/"&mid(Parameters!ini_date.Value,5,2)&"/"&left(Parameters!ini_date.Value,4))),"MMMM dd, yyyy")
      

      只需将“MMMM dd, yyyy”部分替换为最适合您的报告的部分。

      【讨论】:

        【解决方案8】:

        这可能会有所帮助。

        假设 InstallDate0 = 151116(只需将 InstallDate0 替换为您的字段名称!)

        我想转换以下 151116 => 11/16/2015

        yyMMdd 字符串类型

        MM/dd/yyyy日期类型

        表达式将是: =format(CDate(Mid(Fields!InstallDate0.Value,3,2)&"/"&Right(Fields!InstallDate0.Value,2)&"/"&Left(Fields!InstallDate0.Value+20000000,4)),"MM/dd/yyyy")

        如果您想做同样的事情,除了 20151116 => 11/16/2015

        yyyy字符串类型的MMdd

        MM/dd/yyyy日期类型

        表达式如下: =format(CDate(Mid(Fields!InstallDate0.Value,5,2)&"/"&Right(Fields!InstallDate0.Value,2)&"/"&Left(Fields!InstallDate0.Value,4)),"MM/dd/yyyy")

        标签:如何使用 SQL Server 报表生成器的表达式将字符串转换为日期

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2016-01-02
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-10-14
          • 1970-01-01
          相关资源
          最近更新 更多