Я не фанат неявных преобразований типов данных, поэтому я бы сформулировал первое как:
select convert(date, convert(varchar(6), @PERIOD ) + '01')
Или используйте datefromparts()
, который является встроенной функцией для построения дат:
select datefromparts( @PERIOD / 100, @PERIOD % 100, 1)