【问题标题】:Reporting Services Remove Time from DateTime in ExpressionReporting Services 从表达式中的 DateTime 中删除时间
【发布时间】:2010-11-26 14:19:17
【问题描述】:

我正在尝试使用明确的时间填充表达式(参数的默认值)。如何从“现在”功能中删除时间?

【问题讨论】:

  • 请务必注意,即使 中的 SQL 仅返回 Date 变量,rdl 仍将使用 DateTime。因此,它必须由 rdl 格式化——请参阅下面的各种答案。

标签: reporting-services expression ssrs-expression


【解决方案1】:

类似这样的:

=FormatDateTime(Now, DateFormat.ShortDate) 

其中“现在”可以替换为您尝试转换的日期/时间字段的名称。)
例如,

=FormatDateTime(Fields!StartDate.Value, DateFormat.ShortDate)

【讨论】:

  • 由于我的日期参数是一个日期时间,我需要一个额外的 CDate() 围绕上述表达式。
  • 如果需要 Excel 格式的报告将不起作用。 FormatDateTIme 是字符串函数。当然它会去掉时间,但结果是一个字符串日期列,在排序时它将作为一个字符串从左到右排序。用户必须使用 Text to Columns 将列转换为真实的日期。
  • 关键是,您不能按照仅日期格式执行 OP 要求的操作。你被字符串日期困住了。
  • 这正是我所需要的。我有一个 SSRS 假设需要添加时间的 DOB 列。微软确实需要更新这个软件。
【解决方案2】:

由于 SSRS 使用 VB,您可以执行以下操作:

=Today() 'returns date only

如果你要使用:

=Now() 'returns date and current timestamp

【讨论】:

  • =Today() 仅在 SSRS 中不返回日期
  • 澄清一下,Today() 仅返回值的日期,但返回的数据类型是 DateTime
【解决方案3】:
=CDate(Now).ToString("dd/MM/yyyy")

尽管您将日期格式硬编码为区域设置。

【讨论】:

  • +1 简洁的答案,事实上,这对我很有帮助。
  • 正如我上面提到的,这可行,但会将列转换为字符串。它仍然不是真正的仅 DATE 数据类型。
【解决方案4】:

如果您必须在报告标题上显示该字段,那么试试这个... 右键单击文本框 > 属性 > 类别 > 日期 > 选择 *格式(注意这将保持区域设置)。

由于这个问题已被多次查看,我将其发布...希望对您有所帮助。

【讨论】:

  • 如果它被忽略了怎么办?例如。日期仍以小时和分钟显示。知道为什么会发生这种情况吗?
  • 如果您为 TextBox/Placeholder 的值指定了一个函数,那么它将覆盖此屏幕上的格式选项。
  • 拯救了我的一天。事件虽然在选项中很容易看到,但许多人不会在这里寻找格式化选项。非常感谢。
【解决方案5】:

如果您希望结果为DateTime 数据类型,只需使用DateValue(Now)

【讨论】:

    【解决方案6】:

    如果预期的数据格式是MM-dd-yyyy,那么试试下面

    =CDate(Now).ToString("MM-dd-yyyy")
    

    同样你可以试试这个,

    =Format(Today(),"MM-dd-yyyy") 
    

    输出: 02-04-2016

    注意:
    Now() 将显示当前日期时间戳

    Today() 只会向您显示日期,而不是时间部分。

    在我的示例中,您还可以设置任何日期格式,而不是 MM-dd-yyyy

    【讨论】:

      【解决方案7】:

      在任何文本框字段的格式属性中,您都可以使用格式字符串:

      例如日/月/年、日等

      【讨论】:

      • 问题是指报表参数的默认值,因此在文本框上设置格式将不起作用。此外,“D/M/Y”不会给出预期的结果,请尝试“dd/MM/yyyy”。
      【解决方案8】:

      可能对其他人有所帮助的一件事是,您可以将:=CDate(Now).ToString("dd/MM/yyyy") 放在 SSRS 的格式字符串属性中,可以通过右键单击该列来获得。这是最干净的方法。那么你的表达式就不会太大并且难以在视觉上“解析”:)

      【讨论】:

        【解决方案9】:
            FormatDateTime(Parameter.StartDate.Value)
        

        【讨论】:

        • 您缺少表达式 FormatDateTime(DateField, DateFormat) 的第二个参数
        【解决方案10】:

        我来晚了,但我尝试了上述所有解决方案!无法让它在参数中删除零并给我一个默认值(它忽略了格式或显示为空白)。我使用的是 SSRS 2005,因此一直在努力解决其笨重/错误的问题。

        我的解决方法是在我从中提取日期的数据库中的自定义 [DimDate] 表中添加一列。我添加了一个列,它是 [date] 列所需格式的字符串表示形式。然后,我在 SSRS 中创建了 2 个新数据集,这些数据集为我的“到”和“从”日期默认值提取了以下 2 个默认值的查询 -

        '来自'

            SELECT  Datestring
            FROM    dbo.dimDate
            WHERE   [date] = ( SELECT   MAX(date)
                               FROM     dbo.dimdate
                               WHERE    date < DATEADD(month, -3, GETDATE()
                             )
        

        '到'

            SELECT  Datestring
            FROM    dbo.dimDate
            WHERE   [date] = ( SELECT   MAX(date)
                               FROM     dbo.dimdate
                               WHERE    date <= GETDATE()
                             )
        

        【讨论】:

          【解决方案11】:

          我对日期/时间参数的解决方案:

          =CDate(Today())
          

          诀窍是按照 Perhentian 的建议转换回 DateTime。

          【讨论】:

            【解决方案12】:

            here找到解决方案

            获取前一天的最后一秒:

            DateAdd("s",-1,DateAdd("d",1,Today())
            

            这将返回前一周的最后一秒:

            =dateadd("d", -Weekday(Now), (DateAdd("s",-1,DateAdd("d",1,Today()))))
            

            【讨论】:

            • 我从谷歌偶然发现了这里..但是..这不能回答你的问题。 (你为什么关心最后一秒?)但是,你确实击败了 RSolberg(谁正确回答了它)。也许您应该编辑您接受的答案以引用他的正确答案?
            • DateAdd("s",-1,DateAdd("d",1,Today()) 返回今天的最后一秒,而不是前一天 - 并且缺少一个关闭备份以使其工作
            【解决方案13】:

            只需将字符串连接到值的末尾即可:

            Fields!<your field>.Value & " " 'test' 
            

            这应该可以工作!

            【讨论】:

            • 嗨,Nathan,您能详细说明您的编辑吗?抱歉,我对 stackoverflow 有点陌生。问候!
            【解决方案14】:

            这应该在数据集中完成。你可以这样做

            Select CAST(CAST(YourDateTime as date) AS Varchar(11)) as DateColumnName
            

            SSRS 布局中,只需这样做=Fields!DateColumnName.Value

            【讨论】:

            • 不会剥离时间组件是 DateColumnName 是 DateTime 数据类型。 OP 只想要日期。
            猜你喜欢
            • 1970-01-01
            • 2023-03-23
            • 1970-01-01
            • 2016-03-14
            • 1970-01-01
            • 2013-04-25
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多