Лучше всего в этом случае использовать функцию Oracle MONTHS_BETWEEN()
.
Вместо:
datediff('QUARTER', pr.StartDate, SYSDATE)
вы должны использовать:
MONTHS_BETWEEN(pr.startdate, SYSDATE) / 3
и вместо:
datediff('MONTH', pr.StartDate, SYSDATE)
вы бы использовали:
MONTHS_BETWEEN(pr.startdate, SYSDATE)
Имейте в виду, что MONTHS_BETWEEN()
будет возвращать доли месяцев, поэтому используйте TRUNC()
или ROUND()
, есливам нужно целое число.
Конечно, если вам нужны дни вместо месяцев, вы можете просто вычесть одну дату из другой, например, SYSDATE - pr.startdate
или наоборот.
Если выНужно добавить дни к дате, вы можете просто к этому:
pr.startdate + 1 -- where 1 is the number of days
А если вам нужно добавить или вычесть месяцы, используйте функцию ADD_MONTHS()
- в отличие от INTERVAL
s, эта функция безопасна дляиспользовать в високосные годы.
Надеюсь, это поможет.