Conversion de DATETIMEOFFSET en DateTime tout en préservant le décalage
Dans SQL Server 2008, la conversion d'un champ DATETIMEOFFSET en champ DATETIME entraîne généralement la perte de informations temporelles dues au décalage. Cependant, il existe un moyen de convertir la valeur tout en conservant le décalage, en la convertissant efficacement en UTC.
La clé de cette conversion réside dans l'utilisation de la fonction CONVERT avec l'argument de style correct. L'argument style spécifie comment la conversion doit être effectuée. Dans ce but spécifique, nous devons utiliser le style 1 :
SELECT CONVERT(datetime2, @createdon, 1)
La requête ci-dessus prend une variable DATETIMEOFFSET (@createdon) et la convertit en valeur DATETIME2 en utilisant le style 1. Ce style convertit la valeur DATETIMEOFFSET en une valeur DATETIME2 en UTC en soustrayant le décalage.
Par exemple, considérons le DATETIMEOFFSET suivant valeur :
2008-12-19 17:30:09.0000000 +11:00
Si nous convertissons cette valeur en utilisant le style 1, nous obtenons :
2008-12-19 06:30:09.0000000
Ce résultat est en heure UTC, supprimant ainsi le décalage.
Notez que la conversion de DATETIME2 en DATETIMEOFFSET à l'aide du style 1 définit simplement le décalage sur 00:00. Cela peut être utilisé comme méthode rapide pour convertir une valeur DATETIMEOFFSET avec un décalage non nul en une valeur DATETIMEOFFSET en UTC :
SELECT convert(datetimeoffset,CONVERT(datetime2, @createdon, 1))
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!