SQL Report Builder:仅返回可用参数值的日期

时间:2017-03-29 09:29:51

标签: sql-server reporting-services parameters

我有一个SQL Server报告,提示输入日期。稍后我将此日期传递给一个获取数据的过程(dbo.spGetData)。我获取可用导入日期的过程如下所示:

ALTER PROCEDURE dbo.spGetImportDates
AS
BEGIN
    SELECT CONVERT(DATE, i.ImportDate) ImportDate
    FROM dbo.Import i
    ORDER BY i.ImportDate DESC
END

在报告中,我已将此SP添加为新数据集并将其选为"可用值"获取Date/Time参数@importDate以获取下拉列表。到现在为止还挺好。问题是,当我这样离开它时,时间也包含在结果集中:

+---------------------+
| ImportDate          |
+---------------------+
| 29.03.2017 00:00:00 |
| 25.03.2017 00:00:00 |
| ...                 |
+---------------------+

我找不到任何更改参数提示格式的选项。我甚至尝试在数据集的查询设计器中直接使用SELECT查询,但我得到了相同的结果。

我是否真的必须将其用作文本参数,然后在过程DATE中将其重新转换为dbo.spGetData,还是有其他解决方案?

2 个答案:

答案 0 :(得分:2)

将存储过程中的ImportDate列保留为DATE数据类型。 转到SSRS中的数据集,然后单击'字段'。 添加一个新的计算字段,将其命名为ImportDateLabel并将其设置为以下表达式:

=Format(Fields!ImportDate.Value,"dd/mm/yyyy")

现在转到您的Paramater,点击'可用值'并更改“标签”字段'引用新的ImportDateLabel字段。保留'值字段'指向ImportDate字段。

答案 1 :(得分:0)

ALTER PROCEDURE dbo.spGetImportDates
AS
BEGIN
    SELECT CAST(CONVERT(DATE, i.ImportDate) AS NVARCHAR(10)) AS ImportDate
    FROM dbo.Import i
    ORDER BY i.ImportDate DESC
END

您只能获得前10个字符,然后将其转换为varchar