Convertir la colonne datetime UTC en heure locale dans une requête SQL
La gestion des dates et heures UTC dans les requêtes SQL peut parfois être gênante, surtout lorsque vous devez les afficher dans votre fuseau horaire local. Il existe des techniques simples pour convertir l'heure UTC en heure locale, éliminant ainsi le besoin de conversions basées sur le code.
Solution pour SQL Server 2008 et supérieur :
Pour SQL Server 2008 ou version ultérieure, utilisez la requête suivante :
<code class="language-sql">SELECT CONVERT(datetime, SWITCHOFFSET(CONVERT(datetimeoffset, MyTable.UtcColumn), DATENAME(TzOffset, SYSDATETIMEOFFSET()))) AS ColumnInLocalTime FROM MyTable</code>
Syntaxe alternative :
Vous pouvez également utiliser la version simplifiée suivante :
<code class="language-sql">SELECT DATEADD(mi, DATEDIFF(mi, GETUTCDATE(), GETDATE()), MyTable.UtcColumn) AS ColumnInLocalTime FROM MyTable</code>
Remarque : évitez de soustraire des dates
Il est important de noter que l'utilisation de l'opérateur - pour soustraire des dates n'est pas recommandée car cela peut conduire à des résultats indéterminés en raison des conditions de course.
Considérez l'heure d'été (DST)
Cette solution fournie ne prend pas en compte les ajustements d'heure d'été. Si nécessaire, veuillez vous référer à la question Stack Overflow suivante :
https://www.php.cn/link/95743904f0de5aa6327dee27efdc81b4
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!