, если вы поместите использование такого выражения в хранимую процедуру:
select CONVERT(datetime, @Year + '-' + @Month + '-' + @Day+ ' ' + @Time)
, тогда все будет в порядке, так как целевой тип данных datetime
будет получать только допустимые строки даты.
если вы используете это в своей хранимой процедуре:
EXEC ('select CONVERT(datetime, @Year+''-''+@Month+''-''+@Day+'' ''+ @Time)')
У вас может быть проблема, маловероятно, поскольку входные строки ограничены короткой длиной, но кто знает, что придумает какой-нибудь хакер, чтобы поместиться в этом крошечном пространстве.