Reporting services Reporting Services从表达式中的日期时间中删除时间
我试图用显式时间填充参数的表达式默认值。如何从“现在”功能中删除时间?类似以下内容:Reporting services Reporting Services从表达式中的日期时间中删除时间,reporting-services,expression,ssrs-expression,Reporting Services,Expression,Ssrs Expression,我试图用显式时间填充参数的表达式默认值。如何从“现在”功能中删除时间?类似以下内容: =FormatDateTime(Now, DateFormat.ShortDate) 其中Now可以替换为您尝试转换的日期/时间字段的名称。 比如说, =FormatDateTime(Fields!StartDate.Value, DateFormat.ShortDate) 从中找到解决方案 这将获取前一天的最后一秒: DateAdd("s",-1,DateAdd("d",1,Today()) 这将返回
=FormatDateTime(Now, DateFormat.ShortDate)
其中Now可以替换为您尝试转换的日期/时间字段的名称。
比如说,
=FormatDateTime(Fields!StartDate.Value, DateFormat.ShortDate)
从中找到解决方案
这将获取前一天的最后一秒:
DateAdd("s",-1,DateAdd("d",1,Today())
这将返回前一周的最后一秒:
=dateadd("d", -Weekday(Now), (DateAdd("s",-1,DateAdd("d",1,Today()))))
由于SSRS使用VB,您可以执行以下操作:
=Today() 'returns date only
如果要使用:
=Now() 'returns date and current timestamp
在任何文本框字段的format属性中,可以使用格式字符串: e、 g.D/M/Y、D等
=CDate(Now).ToString("dd/MM/yyyy")
尽管您正在将日期硬编码为区域设置。如果您希望结果为DateTime数据类型,只需使用DateValueNow。一件可能对其他人有所帮助的事情是,您可以将:=CDateNow.toString/MM/yyyy放在SSRS的Format String属性中,该属性可以通过右键单击列获得。这是最干净的方法。这样,您的表达式就不会太大,也不难直观地解析:我在游戏中迟到了,但我尝试了上面所有的解决方案!无法让它删除参数中的零并给我一个默认值它忽略了格式或显示为空。我使用的是SSRS 2005,所以我在努力解决它的笨重问题
FormatDateTime(Parameter.StartDate.Value)
我的解决方法是在数据库中的自定义[DimDate]表中添加一列,从中提取日期。我添加了一个列,该列是以[date]列所需格式表示的字符串。然后,我在SSRS中创建了两个新的数据集,它为我的“To”和“From”日期默认值引入了以下两个默认值查询-
“来自”
SELECT Datestring
FROM dbo.dimDate
WHERE [date] = ( SELECT MAX(date)
FROM dbo.dimdate
WHERE date < DATEADD(month, -3, GETDATE()
)
“到”
这应该在数据集中完成。你可以这样做
Select CAST(CAST(YourDateTime as date) AS Varchar(11)) as DateColumnName
在SSRS布局中,只需这样做=字段!DateColumnName.Value日期/时间参数的我的解决方案:
=CDate(Today())
诀窍是按照推荐的Perhentian格式转换回DateTime。如果必须在报告标题上显示字段,请尝试以下操作。。。 右键单击文本框>属性>类别>日期>选择*格式注意:这将保持区域设置 因为这个问题已经被浏览过很多次了,我把它贴出来。。。希望能有帮助 如果预期的数据格式为MM dd yyyy,请尝试以下操作 同样,你可以试试这个 产出:2016年4月2日 注: 现在将显示当前日期和时间戳 今天将向您展示仅日期而非时间部分
在我的示例中,您还可以设置任何日期格式,而不是MM dd yyyy。只需将字符串连接到值的末尾:
Fields!<your field>.Value & " " 'test'
这应该行得通 +1的简洁回答是,事实上,这对我很有帮助。正如我前面提到的,这可以工作,但会将列变成字符串。这仍然不是一个真正的日期数据类型。我是从谷歌无意中发现的。。但是这不能回答你的问题。你为什么关心最后一秒?然而,你确实击败了回答正确的RSolberg。也许你应该编辑你接受的答案以引用他的正确答案?DateAdds,-1,DateAddd,1,Today返回今天的最后一秒,而不是前一天-并且缺少一个结束backet以使其工作问题是指报告参数的默认值,因此在文本框上设置格式将不起作用。此外,D/M/Y不会给出预期的结果,请改为尝试dd/MM/yyyy。您缺少表达式FormatDateTimeDateField的第二个参数DateFormat因为我的日期参数是datetime,所以我需要在上述表达式周围添加一个CDate。如果报表需要Excel格式,则此操作无效。FormatDateTIme是字符串函数。当然,它去掉了时间,但结果是一个字符串日期列,排序时该列将作为字符串从左到右排序。用户必须使用“文本到列”将列转换为实际日期。问题是,您不能按照OP要求的“仅日期”格式执行操作。你一直在玩串约会,这正是我所需要的。我有一个DOB专栏,SSRS认为需要添加时间。Microsoft确实需要更新此软件。=Today不在SSR中仅返回日期为澄清起见,Today仅返回值方面的日期,但返回的数据类型是DateTime。请查看方法1:请注意,即使其中的SQL仅返回日期变量,rdl仍将使用DateTime。因此,它必须由rdl格式化-请参阅下面的各种答案。如果它因任何原因被忽略,该怎么办?例如,日期仍然以小时和分钟显示。知道为什么会发生这种情况吗?如果您为文本框/占位符的值指定了一个函数,那么它将覆盖此屏幕上的格式选项。已保存我的一天。事件虽然在选项中很容易看到,但许多人不会在此处查找格式化选项。非常感谢。由于DateColumnName是DateTime数据类型,所以不会去掉时间组件。警察只想知道日期嗨Nathan, 请你详细说明一下你的编辑工作好吗?。对不起,我对stackoverflow有点陌生。当做
=CDate(Now).ToString("MM-dd-yyyy")
=Format(Today(),"MM-dd-yyyy")
Fields!<your field>.Value & " " 'test'