Предполагая, что ваши INT
s называются @d
, @m
и @y
:
DATEADD(month, ((@y - 1900) * 12) + @m - 1, @d - 1)
EDIT
Обратите внимание, что этот метод никоим образом не является "каноническим", он основан на манипулировании реализацией DATETIME
.
в SQL Server.
Если вы передадите недопустимые значения для @d
, @m
или @y
, вы получите недействительный DATETIME
в ответ:
- {@ y = 2009, @ m = 11, @ d = 12} возвращает 2009-11-12 (правильно)
- {@ y = 2009, @ m = 11, @ d = 50} возвращает 2009-12-19 (неверно)
- {@ y = 2009, @ m = 13, @ d = 12} возвращает 2010-01-12 (неверно)