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 consulta anterior que usa dateadd
siempre restará 4 horas. Si su objetivo es convertir una fecha y hora arbitraria de UTC a la hora local, entonces es más complicado porque el desplazamiento que necesita sumar o restar depende de la fecha y hora original. Un solo valor como -4 no siempre funcionará. Aquí hay algunas ideas para tratar el caso general:
Conversión efectiva de fechas entre UTC y hora local (es decir, PST) en SQL 2005