Reporting Services从表达式中的DateTime中删除时间

Jef*_*eff 56 expression reporting-services ssrs-expression

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

Mic*_*dox 93

像这样的东西:

=FormatDateTime(Now, DateFormat.ShortDate) 
Run Code Online (Sandbox Code Playgroud)

其中"Now"可以替换为您尝试转换的日期/时间字段的名称.)
例如,

=FormatDateTime(Fields!StartDate.Value, DateFormat.ShortDate)
Run Code Online (Sandbox Code Playgroud)

  • 由于我的日期参数是一个日期时间,我需要在上面的表达式周围附加一个CDate(). (5认同)

RSo*_*erg 43

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

=Today() 'returns date only
Run Code Online (Sandbox Code Playgroud)

如果您要使用:

=Now() 'returns date and current timestamp
Run Code Online (Sandbox Code Playgroud)

  • = Today()仅在SSRS中不返回日期 (7认同)
  • 好的,这么简单! (4认同)

Per*_*ian 27

=CDate(Now).ToString("dd/MM/yyyy")
Run Code Online (Sandbox Code Playgroud)

虽然您正在将日期格式编码为区域设置.

  • 事实上,对于我来说非常有帮助的简明回答+1. (2认同)

sin*_*wat 16

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

由于这个问题已被多次查看,我发布它...希望它有所帮助.

在此输入图像描述

  • 如果您为文本框/占位符的值指定了函数,那么它将覆盖此屏幕上的格式选项。 (2认同)

小智 8

只要使用DateValue(Now),如果你想要得到的结果是的DateTime数据类型.


ped*_*ram 7

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

=CDate(Now).ToString("MM-dd-yyyy")
Run Code Online (Sandbox Code Playgroud)

同样你可以尝试这个,

=Format(Today(),"MM-dd-yyyy") 
Run Code Online (Sandbox Code Playgroud)

输出: 02-04-2016

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

Today()会告诉你日期不是时间部分.

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


zza*_*deh 5

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

例如D/M/Y,D等

  • 问题是引用报表参数的默认值,因此在文本框中设置格式将不起作用.此外,"D/M/Y"不会给出预期的结果,请尝试"dd/MM/yyyy". (4认同)

Jef*_*eff 2

从这里找到了解决方案

这获取前一天的最后一秒:

DateAdd("s",-1,DateAdd("d",1,Today())
Run Code Online (Sandbox Code Playgroud)

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

=dateadd("d", -Weekday(Now), (DateAdd("s",-1,DateAdd("d",1,Today()))))
Run Code Online (Sandbox Code Playgroud)

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