capita spesso di utilizzare all'interno di query e viste sul db sql la funzione getdate() che restituisce la data e ora corrente sul server slq.
capita anche che ci si aspetta che la data sia corretta e che combaci con l'orario corrente del sistema in uso. su sql azure, invece la data è riferita alla zona nella quale è stato configurato il server sql azure.
Di conseguenza eseguendo il comando getdate() ci viene restituita una data e ora errati. per questo motivo ho cercato una soluzione e un trucco per risolvere questo problema.
http://wely-lau.net/2011/07/10/managing-timezone-in-sql-azure-2/
si tratta di creare una funzione adhoc
CREATE FUNCTION [dbo].[GetLocalDate]
(
@TimezoneDiffInHour TINYINT = 2
-- default set to 2 (GMT +2 = europa)
)
RETURNS DATETIME
AS
BEGIN
RETURN DATEADD(Hh, @TimezoneDiffInHour , GETUTCDATE())
END
una volta creata la funzione
invece di richiamare getdate()
potremo richiamare GetLocalDate(2)
dove il (2) in questo caso è la differenza di ore rispetto alla timezone del server sql.