Progr.it | maggio 2014

Sql Azure timezone :gedtate() con fuso orario

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.