在 SSRS 中使用时区

发布于 09-04 07:09 字数 242 浏览 11 评论 0原文

我们将 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

倚栏听风2024-09-11 07:09:23

我想通了。
在 SSRS 报告中,我添加了对程序集 System.Core 的引用

,然后在需要转换我使用的时区的任何地方:

=Code.FromUTC(Fields!UTCDateFromDatabase.Value,Parameters!TimeZone.Value),

其中Parameters!TimeZone。 Value 是时区的字符串值,可以使用 TimeZone.CurrentTimeZone.StandardName 在应用程序中检索,

我可能应该写 FromUTC 的作用:

Shared Function FromUTC(ByVal d As Date, ByVal tz As String) As Date
 Return (TimeZoneInfo.ConvertTimeBySystemTimeZoneId(d, TimeZoneInfo.Utc.Id, tz))
end function

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:

Shared Function FromUTC(ByVal d As Date, ByVal tz As String) As Date
 Return (TimeZoneInfo.ConvertTimeBySystemTimeZoneId(d, TimeZoneInfo.Utc.Id, tz))
end function
情魔剑神2024-09-11 07:09:23

尝试使用此替代:

=System.TimeZone.CurrentTimeZone.ToLocalTime(Fields!DateTime.Value)

对于从 AX 2012 调用的 SSRS 报告,这就是我使用的。

归功于这篇文章:http://social.msdn.microsoft.com/Forums/en-US/500448a3-bf58-44ab-8572-81becd67d8b8/convert-utc-time-to-local-time ?forum=sqlreportingservices

Try using this instead:

=System.TimeZone.CurrentTimeZone.ToLocalTime(Fields!DateTime.Value)

For SSRS reports called from AX 2012, this is what I use.

Credit goes to this post: http://social.msdn.microsoft.com/Forums/en-US/500448a3-bf58-44ab-8572-81becd67d8b8/convert-utc-time-to-local-time?forum=sqlreportingservices

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文