En un cliente se tiene un problema que por tener ellos alojados el servicio de Base de datos en una zona horaria, solicitan que exista un parámetro que defina la zona horaria de cada empresa y que registre efectivamente la fecha y hora de la empresa en cuestión. El cliente lo identificó en la fecha y hora en que se genera la planilla. Por ejemplo si se genera 14/02/02 16:30, el sistema indica que se generó a las 22:30. Ya se cambió la zona horaria del appservice y sigue igual, por lo que se asume que evolution lo está tomando de la base de datos. Una solución podría ser habilitar una función gen.getdate que devuelva la fecha y hora según la zona horaria, por ejemplo: select convert(datetime, dateadd(hour, -6,GETUTCDATE())); donde -6, sería un parámetro, según la zona horaria. ¿Es factible? ¿Qué implicaría? A nivel de base de datos es sencillo realizar el cambio, pero ¿cómo impactaría a nivel del código fuente de evolution? ¿Que solución se le puede dar al cliente? |
Sobre este tema se dan las siguientes situaciones:
Para el caso de Azure SQL Server Single Database o Elastic Pool, la única manera es lo como lo describiste en la pregunta. Crear una función que sustituya GETDATE() por una hecha a la medida permita regresar la fecha convertida a la zona horaria requerida y luego se cambia en todos los procedimientos de base. Adjunto link con todas las consideraciones sobre este tema: https://cloud.google.com/blog/products/databases/how-to-use-local-timezone-with-cloud-sql-for-sql-server/ Adjunto la documentación correspondiente en el sitio de documentación de Microsoft. https://learn.microsoft.com/en-us/azure/azure-sql/managed-instance/timezones-overview?view=azuresql Finalmente, el código fuente de Evolution NO TOMA DE LA BASE DE DATOS LA FECHA Y HORA, la toma de la configuración del AppService. AppJobHost, GenPlaAPI y CrystalReportsAPI toman la fecha y hora de la configuración del Windows Server en el cual están hospedados. |