Кажется, правильно, что вы делаете.
Манипулирование строками и датами является основным ядром в SQL, никаких необычных оболочек для автоматического преобразования и манипулирования форматами даты (accpac, memory, shiver).
Вы можете записать это в пользовательскую функцию, чтобы добавить дни к соответствующей дате и вернуть результат:
create function accpacadd
( @accpacdate decimal,
@days int)
RETURNS decimal
AS BEGIN
declare @date1 as datetime
set @date1=cast(CAST(@accpacDate as varchar(8)) as datetime) /*get the starting value as a date */
set @date1=DATEADD(day, @days, @date1)
return convert(decimal, CONVERT(varchar(8), @date1, 112))
END
Так что тогда вы можете просто позвонить с помощью минимального кода:
select dbo.accpacadd(20100102, 5)
select dbo.accpacadd(20100102, -5)
Дает 20100107 и 20091228 соответственно