Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

SQL convertit la date et l'heure et soustrait les heures

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