Maison >base de données >tutoriel mysql >Comment convertir une colonne Datetime UTC en heure locale dans les instructions SQL SELECT ?

Comment convertir une colonne Datetime UTC en heure locale dans les instructions SQL SELECT ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2025-01-17 04:42:09630parcourir

How to Convert a UTC Datetime Column to Local Time in SQL SELECT Statements?

Convertir la colonne de date et d'heure UTC en heure locale dans l'instruction SQL SELECT

Lors de l'exécution de requêtes SQL SELECT, il peut être nécessaire de convertir les colonnes datetime UTC en heure locale pour améliorer la convivialité et la précision de la représentation des données. Ceci peut être réalisé grâce à des techniques spécifiques à la version SQL utilisée.

Pour SQL Server 2008 ou supérieur :

  • Utilisez la fonction CONVERT combinée avec SWITCHOFFSET et CONVERT(datetimeoffset) pour convertir les colonnes UTC en heure locale, en tenant compte du décalage horaire du système.

Syntaxe SQL :

<code class="language-sql">SELECT CONVERT(datetime, 
               SWITCHOFFSET(CONVERT(datetimeoffset, 
                                    MyTable.UtcColumn), 
                            DATENAME(TzOffset, SYSDATETIMEOFFSET()))) 
       AS ColumnInLocalTime
FROM MyTable</code>
  • Vous pouvez également utiliser la fonction DATEADD plus concise pour la conversion.

Syntaxe SQL :

<code class="language-sql">SELECT DATEADD(mi, DATEDIFF(mi, GETUTCDATE(), GETDATE()), MyTable.UtcColumn) 
       AS ColumnInLocalTime
FROM MyTable</code>

Remarque :

Évitez d'utiliser le signe moins - pour soustraire les dates de conversion, car cela peut conduire à des résultats imprévisibles en raison de conditions de concurrence entre le système et les dates-heures locales.

Notes supplémentaires :

La méthode fournie ne prend pas en compte l'heure d'été (DST). Pour les ajustements de l'heure d'été, veuillez vous référer au sujet Stack Overflow :

"Comment créer des fonctions de début et de fin d'heure d'été dans SQL Server"

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn