SSRS查询日期格式和参数日期格式不同?

时间:2016-04-25 15:31:33

标签: sql-server visual-studio date reporting-services bids

BIDS / Visual studio 2005

嗨,我已经浏览了SO问题,找不到答案。我确定某处必须有一个。

这看起来像一个简单的问题,但我尝试过多种变体,但无法找到解决方案!

简单数据集:" DateRange"给我一个dd / mm / yyyy hr:mn:ss格式,例如

FromDate                 ToDate
2016-04-24 00:00:00.000 2016-04-25 23:59:59.997

select (CAST(FLOOR(CAST(dateadd(d,-1,getdate()) AS FLOAT) ) AS DATETIME)) AS 'FromDate',
DATEADD(ms, -3, DATEADD(dd, DATEDIFF(dd, -1, getdate()), 0)) as 'ToDate'

然后我使用FromDate和ToDate作为报告中的参数作为默认值。但是,它们会在参数字段中显示为" mm / dd / yyyy hh:mn:ss" 格式!

我的控制面板设置是英国英语。这适用于Visual Studio" Preview"但由于日期无法识别,因此会在部署时失败!有什么建议??

2 个答案:

答案 0 :(得分:1)

每个报告都有自己的本地化设置。在报告的“属性”面板中,您将在“本地化”部分中看到Language属性。您可以将其设置为en-GB,以解决您的问题。但是,我通常将其设置为=User!Language以使用用户的区域设置。

修改

由于这不起作用,让我们转换为军事日期格式(所有元素按数量级的降序 - 年,月,日,小时等)作为字符串,让应用程序转换它回到约会。这种格式是传递日期以避免区域性问题的最有效方式:

select CONVERT(VARCHAR(23), (CAST(FLOOR(CAST(dateadd(d,-1,getdate()) AS FLOAT)) AS DATETIME)), 121) AS 'FromDate',
CONVERT(VARCHAR(23), DATEADD(ms, -3, DATEADD(dd, DATEDIFF(dd, -1, getdate()), 0)), 121) as 'ToDate'

答案 1 :(得分:0)

我可以在可用时间内工作的唯一解决方案是将SSRS参数设置为字符串,并将日期转换为字符串,如下所示:

select distinct left(convert(varchar, (CAST(FLOOR(CAST(dateadd(d,-1,mydate)   AS FLOAT) ) AS DATETIME)),120),30) as FromDate,
left(convert(varchar, DATEADD(ms, -3, DATEADD(dd, DATEDIFF(dd, -1, mydate), 0)),120),30) as ToDate
from mydb
order by fromdate desc

然后,该参数作为查询中的日期进行CAST。真的有点麻烦!