Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

SQL converte datetime e sottrae ore

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