давайте построим этот шаг за шагом, чтобы вы могли следовать логике
declare @value varchar(6) = '042011'
declare @datestring varchar(8)
declare @date date
-- convert your format to a regional independant format including day 1
select @datestring = concat(right(@value, 4), left(@value, 2), '01')
-- convert this into a valid date type
select @date = convert(date, @datestring)
-- now we can get the difference, first the years and then the months
select datediff(month, @date, getdate()) / 12 as years,
datediff(month, @date, getdate()) % 12 as months
все вместе это выглядит так
select datediff(month, convert(date, (concat(right(@value, 4), left(@value, 2), '01'))), getdate()) / 12 as years,
datediff(month, convert(date, (concat(right(@value, 4), left(@value, 2), '01'))), getdate()) % 12 as months
где @value можно заменить на столбец вашеготаблица
например, как это выглядит в запросе
declare @table table (value varchar(8))
insert into @table (value)
values ('012011'), ('022011'), ('032011'), ('042011'), ('052011'), ('062011'), ('072011'), ('082011'), ('092011'), ('102011'), ('112011'), ('122011')
select value,
datediff(month, convert(date, (concat(right(value, 4), left(value, 2), '01'))), getdate()) / 12 as years,
datediff(month, convert(date, (concat(right(value, 4), left(value, 2), '01'))), getdate()) % 12 as months
from @table
результат равен (getdate() returned 20190604 on the time of writing this)
value years months
----- ----- ------
012011 8 5
022011 8 4
032011 8 3
042011 8 2
052011 8 1
062011 8 0
072011 7 11
082011 7 10
092011 7 9
102011 7 8
112011 7 7
122011 7 6