Maison >base de données >tutoriel mysql >Comment créer correctement une valeur datetime à partir du jour, du mois et de l'année dans T-SQL ?
Construction de valeurs de date et d'heure T-SQL : créer correctement la date et l'heure à partir des valeurs de jour, de mois et d'année
La conversion de composants de date discrets en une seule valeur datetime est une tâche courante dans SQL Server. Ce guide explore la manière correcte de créer une date/heure à partir des valeurs de jour, de mois et d'année pour garantir une représentation précise de la date.
Le problème
L'utilisation de la fonction DATEPART pour combiner des composants de date individuels produit souvent des résultats incorrects. L'expression CAST(DATEPART(year, DATE) '-' DATEPART(month, DATE) '-' DATEPART(day, DATE) AS DATETIME)
fournie dans la question n'assemble pas correctement la valeur datetime.
Solution
La meilleure façon de créer un datetime à partir d'un composant de date spécifique est d'effectuer des opérations arithmétiques sur les valeurs. La déclaration suivante démontre cette approche :
<code class="language-sql">SELECT DateAdd(day, @DayOfMonth - 1, DateAdd(month, @Month - 1, DateAdd(Year, @Year-1900, 0)))</code>
Cette instruction profite de la représentation interne des valeurs datetime dans SQL Server, où la première partie représente le nombre de jours depuis le 1er janvier 1900, et la deuxième partie représente la partie fractionnaire de la journée (l'heure) .
Alternatives
À partir de SQL Server 2012, une fonction intégrée nommée DATEFROMPARTS(year, month, day)
a été introduite et peut être utilisée directement à cette fin :
<code class="language-sql">SELECT DATEFROMPARTS(@Year, @Month, @DayOfMonth)</code>
Considérations relatives aux années bissextiles
Lorsque vous traitez des années bissextiles, assurez-vous toujours d'effectuer d'abord l'addition de l'année pour tenir compte du jour supplémentaire de février. L'instruction modifiée suivante résout le problème :
<code class="language-sql">SELECT DateAdd(month, @Month - 1, DateAdd(year, @Year-1900, @DayOfMonth - 1))</code>
Conclusion
En employant ces méthodes, les développeurs peuvent créer efficacement des valeurs datetime à partir de composants individuels de jour, de mois et d'année dans T-SQL, garantissant ainsi l'exactitude de la représentation de la date et la gestion correcte des années bissextiles.
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!