Почему вы пишете свою собственную функцию?
SQL Server предлагает datefromparts()
, поэтому просто напишите:
select datefromparts(2018, 11, 30)
Если вы хотите datetime2
:
select convert(datetime2, datefromparts(2018, 11, 30))
Или datetime2fromparts()
:
select datetime2fromparts(2018, 11, 30, 0, 0, 0)
Поддержка SQL Server 2008 R2 заканчивается в июле 2019 г., поэтому следует обновить до поддержкизаканчивается.
В старой системе вы можете конвертировать без формата - если формат даты по умолчанию не YDM:
set @VatDateText = cast(@vYEAR as varchar(4))+'-'+cast(@vMONTH as varchar(2))+'-'+cast(@vDAY as varchar(2));
set @VatDate = convert(datetime2, convert(date, @VatDateText));