declare @createTime datetime = '2012-10-06 02:29:37.243';
-- original value, default formatting
select @createTime;
-- formatted
select convert(varchar, @createTime, 100);
-- subtract 4 hours, formatted
select convert(varchar, dateadd(hour, -4, @createTime), 100);
La query precedente che utilizza dateadd
sottrarrà sempre 4 ore. Se il tuo obiettivo è convertire una data e ora arbitraria dall'ora UTC all'ora locale, è più complicato perché l'offset che devi aggiungere/sottrarre dipende dalla data e ora originale. Un singolo valore come -4 non funzionerà sempre. Ecco alcune idee per affrontare il caso generale:
Conversione efficace delle date tra UTC e ora locale (es. PST) in SQL 2005