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 :
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>
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!