我有一个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
,还是有其他解决方案?
答案 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