SELECT *
FROM xyz
WHERE
xdate >= TRUNC(SYSDATE) - 7 --last 7 days AND
TRUNC (xdate) - TRUNC (xdate, 'IW') NOT IN (5,6) --not sat or sun
Возьмите данные за последние 7 дней и удалите все данные в субботу или воскресенье.
TRUNC (xdate) - TRUNC (xdate, 'IW')
возвращает значение от 0 до 6 включительно.0 понедельник.На это не влияют настройки даты NLS, поскольку она использует одинаковые настройки региона в обеих магистралях, поэтому независимо от того, начинается ли неделя в воскресенье или понедельник в вашей стране, результат вычисления будет одинаковым
В любом заданном7-дневный период у вас есть 5 дней и 2 дня выходных
Обратите внимание, что в этом запросе предполагается, что в таблице нет данных с датой в будущем.Если есть ограничение, xdate должно быть меньше sysdate