Использовать один и тот же метод в SQL, который работает без изменений как в Oracle, так и в MS Sql Server?
Единственный способ, которым я вижу, - это использовать функцию, которая работает одинаково в обоих случаях.
Для этого вы можете создать функцию EOMONTH в Oracle.
Функция, которая работает так же, как существующая функция EOMONTH в MS Sql Server.
CREATE OR REPLACE FUNCTION EOMONTH (dt DATE, months SIMPLE_INTEGER DEFAULT 0)
RETURN DATE IS
BEGIN
RETURN LAST_DAY(ADD_MONTHS(dt, months));
END;
/
Затем, чтобы получить последний день предыдущего месяца, вы можете получить EOMONTH на -1 месяц в обеих СУБД:
SELECT EOMONTH(col, -1) AS EndOfPreviousMonth FROM yourtable
Тест Oracle на дБ <>fiddle здесь
MS Sql Тест сервера на db <> fiddle здесь