从日期选择器转换用户输入的日期

时间:2013-05-28 17:19:27

标签: reporting-services datetimeoffset

我有一个使用日期参数的报告(因此必须是SSRS中的日期时间,这很糟糕)。当用户输入诸如“5/1”之类的日期时,它会创建一个DateTimeOffset数据类型,无论如何我无法将其转换为其他任何内容,格式化或在文本框中连接。我尝试将日期转换为字符串等等。我得到的是:

  

从“DateTimeOffset”类型转换为“String”类型无效。 ('String'被我试图将它投射到的任何东西取代)

当用户在日期字段中键入“5/1”和“5/31”时,肯定有办法让文本框显示“从2013年5月1日到2013年5月31日”?微软是否真的认为有计算机知识的人想拿起鼠标来使用他们的日期选择器而不是使用标签?

2 个答案:

答案 0 :(得分:1)

尝试以下表达式:

="From " & Format(Parameters!Param1.Value.DateTime, "M/d/yyyy") & " to ..... etc"

为了测试这个表达式,我创建了一个新的报告,添加了一个DateTime参数,并在文本框中输入“5/1”,点击回车。该报告提供了以下文本框:

  

从2013年1月5日到.....等

对于我的语言环境,这是正确的,因为在输入DateTime值时,假定天数在几个月之前。查看报告时,文本框也会更新并显示:

  

5-1-2013 0:00:00 +01:00

从这里你应该能够推断并使用它作为第二个参数,扩展表达式以显示报告中所需的确切字符串。

答案 1 :(得分:1)

参数!Param1.Value.DateTime在用户省略年份时帮助,但在用户决定包含年份时失败。在这两种情况下,我无法让它工作。

试试这个。

将日期参数值包含在结果集中的字段中。您的SQL可能如下所示:

SELECT field1, field2, Convert(date, @FromDate) [FromDate_param] FROM table

然后你可以在SSRS中创建一个表达式,如:

 ="From " & Format(First(Fields!FromDate_param.Value), "M/d/yy")