2010-06-03 18 views
14

Almacenamos todas nuestras fechas Base de datos de SQL Server 2008 en hora UTC en columnas DateTime. Estoy usando SSRS para crear informes y necesito convertir todas las veces en los informes a la zona horaria de la computadora desde la que se está ejecutando el informe.Trabajando con zonas horarias en SSRS

Sé que siempre podría pasar el desplazamiento de la zona horaria actual como un parámetro para el informe y agregar o quitar la compensación de la zona horaria, pero esto no mostraría correctamente las fechas históricas debido a los ahorros de luz diurna.

¿Tiene SSRS alguna función que maneje esto? ¿Debo pasar la zona horaria a las funciones del servidor SQL y hacer que SQL Server convierta la hora?

Respuesta

14

Me di cuenta. En el informe de SSRS, he añadido una referencia al ensamblado System.Core

A continuación, en cualquier lugar que necesitaba para convertir la zona horaria utilicé:

= Code.FromUTC (campos UTCDateFromDatabase.Value, los parámetros! TimeZone.Value)

donde Parámetros TimeZone.Value es el valor de cadena de la zona horaria que se puede recuperar en la aplicación mediante TimeZone.CurrentTimeZone.StandardName

probablemente debería poner lo hace FromUTC:

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

Esto está bien si sólo se está llamando a la función que un par de veces, pero no si está llamando a la función para cada fila. Para un informe grande, llamar a su función para cada fila tendrá un impacto en el rendimiento de las exportaciones. No he podido encontrar una alternativa desafortunadamente. – Kev

+0

@ClassyFedora - No específicamente SSRS, pero [esto podría ayudar] (https://github.com/mj1856/SqlServerTimeZoneSupport) –

7

Intente utilizar esto en su lugar:

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

Para SSRS informes pedidos de AX 2012, esto es lo que yo uso.

crédito va a este post: http://social.msdn.microsoft.com/Forums/en-US/500448a3-bf58-44ab-8572-81becd67d8b8/convert-utc-time-to-local-time?forum=sqlreportingservices

+5

¿Realmente funciona? Los informes se muestran en el servidor. Esto se convertiría a la hora del servidor local solamente, no a la hora local del usuario. – m0n0ph0n

Cuestiones relacionadas