Oracle предлагает функцию TRUNC(datestamp, format)
для манипулирования датами таким образом.Вы можете использовать различные строки формата , чтобы получить первый день квартала, года или даже верхнюю часть часа.
При заданном значении даты и времени Oracle возвращает полночь впервый день текущей недели с этим выражением:
TRUNC(datestamp,'DY')
Вы можете добавить дни к отметке даты.Поэтому это выражение дает вам полночь в последний день недели
TRUNC(datestamp,'DY') + 6
Селектор предложения WHERE для всех строк текущей недели может быть следующим:
WHERE datestamp >= TRUNC(SYSDATE,'DY')
AND datestamp < TRUNC(SYSDATE,'DY') + 7
Обратите внимание, чтоконец диапазона - незадолго до (<
) полуночи первого дня следующей недели.Вам это нужно, потому что у вас могут быть метки даты после полуночи в последний день недели.(Осторожно, используя BETWEEN
для диапазонов дат.)
И,
SELECT TO_CHAR(TRUNC(SYSDATE,'DY'),'YYYY-MM-DD'),
TO_CHAR(TRUNC(SYSDATE,'DY')+6,'YYYY-MM-DD')
FROM DUAL;
отображает первые и последние даты текущей недели в формате, подобном ISO.
Арифметика даты это круто.Вам стоит потрудиться изучать арифметические функции даты в вашей СУБД хотя бы раз в год.