在 SSRS 中使用时区
我们将 SQL Server 2008 数据库中的所有日期以 UTC 时间存储在 DateTime 列中。 我正在使用 SSRS 创建报告,并且需要将报告上的所有时间转换为运行报告的计算机的时区。
我知道总是可以将当前时区偏移量作为参数传递给报告,并添加或减去时区的偏移量,但由于夏令时,这不会正确显示历史日期。
SSRS 有处理这个问题的函数吗?我应该将时区传递给 SQL Server 函数并让 SQL Server 转换时间吗?
We store all our dates SQL Server 2008 database in UTC time in DateTime columns.
I'm using SSRS to create reports and I need to convert all the times on the reports to the Time Zone of the computer where they're running the report from.
I know could always just pass in the current timezone offset as a parameter to the report and add or subtract the offset from the timezone, but this wouldn't correctly show historical dates because of daylight savings.
Does SSRS have any functions that handle this? Should I pass the timezone to the SQL server functions and have the SQL Server convert the time?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
发布评论
评论(2)
尝试使用此替代:
=System.TimeZone.CurrentTimeZone.ToLocalTime(Fields!DateTime.Value)
对于从 AX 2012 调用的 SSRS 报告,这就是我使用的。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
我想通了。
在 SSRS 报告中,我添加了对程序集 System.Core 的引用
,然后在需要转换我使用的时区的任何地方:
=Code.FromUTC(Fields!UTCDateFromDatabase.Value,Parameters!TimeZone.Value),
其中Parameters!TimeZone。 Value 是时区的字符串值,可以使用 TimeZone.CurrentTimeZone.StandardName 在应用程序中检索,
我可能应该写 FromUTC 的作用:
I figured it out.
In the SSRS report, I've added a reference to the assembly System.Core
Then anywhere I needed to convert the timezone I used:
=Code.FromUTC(Fields!UTCDateFromDatabase.Value, Parameters!TimeZone.Value)
where Parameters!TimeZone.Value is the string value of the timezone which can be retrieved in the application by using TimeZone.CurrentTimeZone.StandardName
I should probably put what FromUTC does: