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 requête ci-dessus qui utilise dateadd
soustraira toujours 4 heures. Si votre objectif est de convertir une date/heure arbitraire de UTC en heure locale, c'est plus compliqué car le décalage que vous devez ajouter/soustraire dépend de la date/heure d'origine. Une valeur unique comme -4 ne fonctionnera pas toujours. Voici quelques idées pour traiter le cas général :
Conversion efficace des dates entre l'heure UTC et l'heure locale (c'est-à-dire PST) dans SQL 2005