我正在尝试用明确的时间填充表达式(参数的默认值)。如何从“现在”功能中删除时间?
14 回答
像这样的东西:
=FormatDateTime(Now, DateFormat.ShortDate)
其中“现在”可以替换为您尝试转换的日期/时间字段的名称。)
例如,
=FormatDateTime(Fields!StartDate.Value, DateFormat.ShortDate)
由于 SSRS 使用 VB,您可以执行以下操作:
=Today() 'returns date only
如果您要使用:
=Now() 'returns date and current timestamp
=CDate(Now).ToString("dd/MM/yyyy")
尽管您将日期格式硬编码为语言环境。
DateValue(Now)
如果您希望结果是DateTime
数据类型,只需使用。
如果预期的数据格式是MM-dd-yyyy
然后尝试下面,
=CDate(Now).ToString("MM-dd-yyyy")
同样你可以试试这个,
=Format(Today(),"MM-dd-yyyy")
输出: 02-04-2016
注意:
Now()
将显示当前日期和时间戳
Today()
只会显示日期而不是时间部分。
您也可以设置任何日期格式,而不是MM-dd-yyyy
在我的示例中。
在任何文本框字段的格式属性中,您都可以使用格式字符串:
例如 D/M/Y、D 等。
可能对其他人有所帮助的一件事是您可以放置:=CDate(Now).ToString("dd/MM/yyyy")
在 SSRS 的格式字符串属性中,可以通过右键单击该列来获得。这是最干净的方法。那么你的表达就不会太大并且难以在视觉上“解析”:)
这将获得前一天的最后一秒:
DateAdd("s",-1,DateAdd("d",1,Today())
这将返回前一周的最后一秒:
=dateadd("d", -Weekday(Now), (DateAdd("s",-1,DateAdd("d",1,Today()))))
FormatDateTime(Parameter.StartDate.Value)
我在游戏中迟到了,但我尝试了上述所有解决方案!无法让它在参数中删除零并给我一个默认值(它忽略了格式或显示为空白)。我使用的是 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()
)
我对日期/时间参数的解决方案:
=CDate(Today())
诀窍是按照 Perhentian 的推荐转换回 DateTime。
只需将字符串连接到值的末尾:
Fields!<your field>.Value & " " 'test'
这应该工作!
这应该在数据集中完成。你可以这样做
Select CAST(CAST(YourDateTime as date) AS Varchar(11)) as DateColumnName
在SSRS
布局中,只需执行此操作=Fields!DateColumnName.Value