2010-06-03 5 views
14

우리는 모든 날짜를 SQL Server 2008 데이터베이스를 UTC 시간으로 DateTime 열에 저장합니다. SSRS를 사용하여 보고서를 만들고 보고서의 모든 시간을 보고서를 실행하는 컴퓨터의 표준 시간대로 변환해야합니다.SSRS에서 표준 시간대 작업

저는 항상 현재 시간대 오프셋을 매개 변수로 보고서에 전달하고 시간대에서 오프셋을 더하거나 뺍니다.하지만 일광 절약 시간으로 인해 과거 날짜가 올바르게 표시되지 않습니다.

SSRS에는이 기능을 처리하는 기능이 있습니까? 시간대를 SQL 서버 함수에 전달하고 SQL Server에서 시간을 변환해야합니까?

답변

14

나는 그것을 알아 냈다. !

= Code.FromUTC (필드 UTCDateFromDatabase.Value, 매개 변수 : 는 SSRS 보고서에서, 나는 어셈블리에 대한 참조가 내가 사용하는 시간대를 변환하는 데 필요한 어디 그런

을 System.Core 추가했습니다! ! 매개 변수 TimeZone.Value이

아마 FromUTC이 무엇을 넣어야 TimeZone.CurrentTimeZone.StandardName

를 사용하여 응용 프로그램에서 검색 할 수있는 시간대의 문자열 값입니다 TimeZone.Value)

:

대신를 사용하여
Shared Function FromUTC(ByVal d As Date, ByVal tz As String) As Date 
Return (TimeZoneInfo.ConvertTimeBySystemTimeZoneId(d, TimeZoneInfo.Utc.Id, tz)) 
end function 
+0

당신은 단지 기능이 몇 번 전화하는 경우는 괜찮지 만, 당신이 모든 행에 대해 함수를 호출하지 않을 경우. 큰 보고서의 경우 모든 행에 대해 함수를 호출하면 내보내기 성능에 영향을줍니다. 불행히도 대안을 찾을 수 없었습니다. – Kev

+0

@ClassyFedora - 특별히 SSRS는 아니지만 [도움이 될 수 있습니다] (https://github.com/mj1856/SqlServerTimeZoneSupport) –

7

시도 : SSRS를 들어

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

가 AX 2012에서 호출 보고서, 이것은 내가 사용하는 것입니다.

신용이 게시물에 간다 : http://social.msdn.microsoft.com/Forums/en-US/500448a3-bf58-44ab-8572-81becd67d8b8/convert-utc-time-to-local-time?forum=sqlreportingservices

+5

실제로 작동합니까? 보고서는 서버 측에서 렌더링됩니다. 이것은 로컬 서버 시간에만 변환되며 사용자의 로컬 시간에는 변환되지 않습니다. – m0n0ph0n

관련 문제