5

我有一个 SSRS 报告,其中包含两个参数,即日期时间。当然,日期选择器不允许您选择与 dateTIME 一起使用的时间,这太有意义了。所以我的想法是给日期时间参数一个默认时间。例如,如果我希望参数的默认值是今天上午 8:30 的日期,我该怎么做?

因此,如果今天是 2013 年 9 月 4 日,我想确切地看到这个:2013 年 9 月 4 日上午 8:30。

我尝试过各种格式。我得到的最接近的是这样做:

=CDate(Format(Today(), "MM/dd/yyyy") & " 8:30 AM")

但是我从来没有能够让秒数不显示,因为你总是必须将它从字符串转换回日期时间,否则你会得到一个无效的类型错误,并且 CDdate 总是显示秒数。

4

3 回答 3

8

似乎您正在尝试直接在参数的默认值中格式化日期,对吗?问题是,CDate() 将字符串转换为 DateTime;和 DateTime 对象确实有秒数。如果您不想在报告中显示这些秒数,则应将日期转换为格式化字符串,例如:

=Format(Parameters!yourParameter.Value, "MM/dd/yyyy hh:mm")

为了为您的日期参数设置默认时间,您还可以在参数默认值中使用类似这样的内容:

Today().AddHours(8).AddMinutes(30)
于 2013-09-06T17:58:00.670 回答
1

我尝试了所有可以在 SO 上找到的方法来格式化这些日期,但无法将参数中的零作为日期字段删除,或者只是显示为空白。我使用的是 SSRS 2005,因此一直在努力解决其笨重/错误的问题。

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

'从'

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

'到'

SELECT Datestring FROM dbo.dimDate WHERE [date] = 
(SELECT max(date) FROM dimdate WHERE date < DATEADD(month,-3,GETDATE()))
于 2014-06-19T15:14:50.493 回答
0

使用这=DateAdd("s",-1,DateAdd("d",1,Parameters!dateTo.Value))对我有用,通过更改为小时来调整您的时间。

于 2016-07-28T10:36:30.177 回答