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);
Powyższe zapytanie, które używa dateadd
zawsze odejmie 4 godziny. Jeśli Twoim celem jest przekonwertowanie dowolnej daty i godziny z czasu UTC na czas lokalny, jest to bardziej skomplikowane, ponieważ przesunięcie, które musisz dodać/odjąć, zależy od oryginalnej daty i godziny. Pojedyncza wartość, taka jak -4, nie zawsze będzie działać. Oto kilka pomysłów na radzenie sobie z ogólnym przypadkiem:
Efektywna konwersja dat między czasem UTC a czasem lokalnym (np. PST) w SQL 2005