Essayez ceci:
Declare @DayOfMonth TinyInt Set @DayOfMonth = 13
Declare @Month TinyInt Set @Month = 6
Declare @Year Integer Set @Year = 2006
-- ------------------------------------
Select DateAdd(day, @DayOfMonth - 1,
DateAdd(month, @Month - 1,
DateAdd(Year, @Year-1900, 0)))
Cela fonctionne aussi bien, a ajouté l'avantage de ne pas faire toute la chaîne de conversions, c'est de la pure arithmétique de traitement (très rapide) et ce n'est pas la personne à charge sur n'importe quel format de date
Cette capitalise sur le fait que SQL Server représentation interne pour les valeurs datetime et smalldatetime est deux partie de la valeur de la première partie de ce qui est un entier représentant le nombre de jours depuis le 1er janvier 1900, et la deuxième partie est une fraction décimale représente la partie fractionnaire d'un jour (pour le moment) --- Si la valeur de l'entier 0 (zéro) toujours se traduit directement en termes de Minuit matin du 1 Janv 1900...
ou, grâce à la suggestion de @brinary,
Select DateAdd(yy, @Year-1900,
DateAdd(m, @Month - 1, @DayOfMonth - 1))