Вы должны использовать Datetime для версии 2008. Написав
DECLARE @LatestDate date;
в предыдущей версии Sql Server выдает ошибку компиляции.
Column, parameter, or variable #1: Cannot find data type date.
Ниже приведен код Сервер SQL 2008
DECLARE @LatestDate datetime;
SET @LatestDate = DATEADD(mm, DATEDIFF(mm, 0, getdate()) ,19) --Get Twentieth Day of current month
SELECT
CASE DATEPART(DW,@LatestDate)
WHEN 1 THEN DATEADD(dd, -2, @LatestDate) --When the twentieth day is a Sunday, take two days off
WHEN 7 THEN DATEADD(dd, -1, @LatestDate) --When the twentieth day is a Saturday, take one day off
ELSE @LatestDate --Else the twentieth day is a weekday already
END