SSRS报表中如何将日期参数格式设为Date而非Date/Time?
SSRS日期参数显示为Date/Time的问题解决
问题成因
- SSRS工具本身没有单独的
Date参数类型,仅提供Date/Time类型,这是产品设计限制,和数据源返回的日期格式无关。 - 即便查询返回不带时间的纯日期值,SSRS渲染参数选择器时,会自动为日期附加默认时间部分(如
00:00:00),导致显示为Date/Time格式。
解决办法
方案1:分离参数显示文本与实际值(推荐)
在获取参数值的查询中,同时返回格式化后的显示文本和原始日期值:
SELECT FORMAT(EndOfMonthDate, 'yyyy-MM-dd') AS ParamLabel, EndOfMonthDate AS ParamValue FROM YourDateTable WHERE EndOfMonthDate >= DATEADD(MONTH, -12, GETDATE()) ORDER BY EndOfMonthDate DESC
在SSRS参数设置界面,将标签字段设为ParamLabel,值字段设为ParamValue。用户看到的是纯日期格式的选项,实际传递给报表的是Date/Time类型的有效日期值,不影响数据筛选逻辑。
方案2:改用文本类型参数,报表查询中转换
- 将SSRS参数类型修改为
Text。 - 参数值查询返回格式化后的文本日期:
SELECT FORMAT(EndOfMonthDate, 'yyyy-MM-dd') AS ParamValue FROM YourDateTable WHERE EndOfMonthDate >= DATEADD(MONTH, -12, GETDATE()) ORDER BY EndOfMonthDate DESC
- 在报表数据源查询中,将文本参数转换为日期类型后再筛选:
SELECT * FROM YourReportData WHERE ReportDate BETWEEN CAST(@Sdate AS DATE) AND CAST(@Edate AS DATE)
注意:需确保文本日期格式与数据库日期解析规则一致,避免转换报错。
方案3:自定义参数界面(进阶)
若对参数样式有更高要求,可通过SSRS的自定义参数界面实现纯日期选择,需编写VB.NET或C#代码自定义日历控件逻辑,适合有开发经验的用户。
内容的提问来源于stack exchange,提问作者Ogi123
相关产品推荐
相关产品推荐

