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);
A consulta acima que usa
dateadd
sempre subtrairá 4 horas. Se seu objetivo é converter um datetime arbitrário de UTC para a hora local, é mais complicado porque o deslocamento que você precisa adicionar/subtrair depende do datetime original. Um único valor como -4 nem sempre funcionará. Aqui estão algumas idéias para lidar com o caso geral:Conversão eficaz de datas entre UTC e hora local (ou seja, PST) no SQL 2005