在我的报告中,用户可以选择日期/时间参数(日期)来过滤报告中的数据。
要从数据库获取数据,我使用带参数的存储过程,因此日期/时间参数值将传递给存储过程。
当用户选择日期并运行报告时,它仅显示“无可用数据”。
所以我检查了 ExecutionLog3 日期参数的传递方式。 日期格式为“ mm / dd / yyyy hh:mm:ss”( 01/14/2014 00:00:00 - 1月14日)。
当我直接使用 01/14/2014 00:00:00 执行存储过程作为日期参数时,我也没有数据。但是当我将日期更改为 14/01/2014 00:00:00 或 14.01.2014 00:00:00 时,一切正常。所以我想问题是,SSRS在将日期参数值发送到存储过程时使用美国日期格式。
到目前为止我尝试过的事情:
CDate(Parameters!date.Value)
SELECT
语句,其中包含有效日期:SELECT CONVERT(date, k.date, 'dd/mm/yyyy') as date
(这里我获得了“nvarchar to date”转换错误)如果有人可以帮助我,那就太好了。
答案 0 :(得分:2)
问题基于数据库对日期值的格式设置。您可以使用Set DateFormat命令在数据库级别设置日期格式。我不相信这是你想要做的。听起来您希望SSRS以正确的格式传递给数据库。
为此,请将传入数据集的参数值更改为以下表达式:
=Format(Parameters!date.Value,"dd/MM/yyyy")