Надеюсь, это поможет:
Создать таблицу для теста:
create table HistorySave(Datum date);
Вставьте некоторые значения теста:
Insert into HistorySave values (CONVERT(DATETIME, '2012-06-05', 102));
Insert into HistorySave values (CONVERT(DATETIME, '2012-06-04', 102));
Insert into HistorySave values (CONVERT(DATETIME, '2012-06-03', 102));
Insert into HistorySave values (CONVERT(DATETIME, '2012-06-09', 102));
Проверьте, какие дни во вставленных данных
SELECT DATENAME(DW, CONVERT(DATETIME, DATUM, 102)) FROM HistorySave;
Проверка данных перед обновлением:
select * from HistorySave;
Оператор обновления:
UPDATE HistorySave
SET Datum =
CASE
WHEN DATENAME(DW, CONVERT(DATETIME, Datum, 102)) = 'Saturday'
THEN (CONVERT(DATETIME, Datum, 102) -1)
WHEN DATENAME(DW, CONVERT(DATETIME, Datum, 102)) = 'Sunday'
THEN (CONVERT(DATETIME, Datum, 102) -2)
ELSE
DATUM
END
Проверка данных после обновления:
select * from HistorySave;
Демо:
https://dbfiddle.uk/?rdbms=sqlserver_2017&fiddle=358aaefe516da8dd96e1da73ce4d5f38