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"但由于日期无法识别,因此会在部署时失败!有什么建议??
答案 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。真的有点麻烦!