Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

SQL converte data e hora e subtrai horas

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